]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/volumes: set uid/gid of FS client's mount as 0/0
authorRamana Raja <rraja@redhat.com>
Fri, 26 Jul 2019 14:05:28 +0000 (19:35 +0530)
committerRamana Raja <rraja@redhat.com>
Sat, 27 Jul 2019 14:18:06 +0000 (19:48 +0530)
... to allow creating subvolumes/subvolume groups within a filesystem.

Fixes: http://tracker.ceph.com/issues/40927
Signed-off-by: Ramana Raja <rraja@redhat.com>
qa/tasks/cephfs/test_volumes.py
src/pybind/mgr/volumes/fs/volume.py

index be747e52b4f8b19a92580120f8de22cc3f4f92bf..eb94251cab9a35836eb09485d9858667bf9be21f 100644 (file)
@@ -157,6 +157,23 @@ class TestVolumes(CephFSTestCase):
             if ce.exitstatus != errno.ENOENT:
                 raise
 
+    def test_default_uid_gid_subvolume(self):
+        subvolume = self._generate_random_subvolume_name()
+        expected_uid = 0
+        expected_gid = 0
+
+        # create subvolume
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+        subvol_path = self._get_subvolume_path(self.volname, subvolume)
+
+        # check subvolume's uid and gid
+        stat = self.mount_a.stat(subvol_path)
+        self.assertEqual(stat['st_uid'], expected_uid)
+        self.assertEqual(stat['st_gid'], expected_gid)
+
+        # remove subvolume
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+
     ### subvolume group operations
 
     def test_subvolume_create_and_rm_in_group(self):
@@ -309,6 +326,23 @@ class TestVolumes(CephFSTestCase):
         # force remove subvolume
         self._fs_cmd("subvolumegroup", "rm", self.volname, group, "--force")
 
+    def test_default_uid_gid_subvolume_group(self):
+        group = self._generate_random_group_name()
+        expected_uid = 0
+        expected_gid = 0
+
+        # create group
+        self._fs_cmd("subvolumegroup", "create", self.volname, group)
+        group_path = self._get_subvolume_group_path(self.volname, group)
+
+        # check group's uid and gid
+        stat = self.mount_a.stat(group_path)
+        self.assertEqual(stat['st_uid'], expected_uid)
+        self.assertEqual(stat['st_gid'], expected_gid)
+
+        # remove group
+        self._fs_cmd("subvolumegroup", "rm", self.volname, group)
+
     ### snapshot operations
 
     def test_subvolume_snapshot_create_and_rm(self):
index 266fa8a23d10655b36df8564bae2b77458aa3a01..8e32a233b4f786c3f9c23b25136d3e8cd3241c82 100644 (file)
@@ -69,6 +69,9 @@ class ConnectionPool(object):
             assert self.ops_in_progress == 0
             log.debug("Connecting to cephfs '{0}'".format(self.fs_name))
             self.fs = cephfs.LibCephFS(rados_inst=self.mgr.rados)
+            log.debug("Setting user ID and group ID of CephFS mount as root...")
+            self.fs.conf_set("client_mount_uid", "0")
+            self.fs.conf_set("client_mount_gid", "0")
             log.debug("CephFS initializing...")
             self.fs.init()
             log.debug("CephFS mounting...")