]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/dashboard: ganesha: add support for sec_label_xattr CEPH fsal attribute
authorRicardo Dias <rdias@suse.com>
Wed, 30 Jan 2019 10:28:37 +0000 (10:28 +0000)
committerRicardo Dias <rdias@suse.com>
Thu, 31 Jan 2019 11:10:10 +0000 (11:10 +0000)
Signed-off-by: Ricardo Dias <rdias@suse.com>
qa/tasks/mgr/dashboard/test_ganesha.py
src/pybind/mgr/dashboard/services/ganesha.py
src/pybind/mgr/dashboard/tests/test_ganesha.py

index 4e9da79853d494993c7cf35bc86fc3ac6993133a..f58fe3c9e1b2ce709120d9e96a3f97dd94d9885e 100644 (file)
@@ -67,9 +67,9 @@ class GaneshaTest(DashboardTestCase):
         self.assertIn(('node3', 'cluster2'), daemons)
 
     @classmethod
-    def create_export(cls, path, cluster_id, daemons, fsal):
+    def create_export(cls, path, cluster_id, daemons, fsal, sec_label_xattr=None):
         if fsal == 'CEPH':
-            fsal = {"name": "CEPH", "user_id":"admin", "fs_name": None}
+            fsal = {"name": "CEPH", "user_id":"admin", "fs_name": None, "sec_label_xattr": sec_label_xattr}
             pseudo = "/cephfs{}".format(path)
         else:
             fsal = {"name": "RGW", "rgw_user_id": "admin"}
@@ -83,7 +83,7 @@ class GaneshaTest(DashboardTestCase):
             "tag": None,
             "access_type": "RW",
             "squash": "no_root_squash",
-            "security_label": False,
+            "security_label": sec_label_xattr is not None,
             "protocols": [4],
             "transports": ["TCP"],
             "clients": [{
@@ -108,7 +108,7 @@ class GaneshaTest(DashboardTestCase):
         exports = self._get("/api/nfs-ganesha/export")
         self.assertEqual(len(exports), 0)
 
-        data = self.create_export("/foo", 'cluster1', ['node1', 'node2'], 'CEPH')
+        data = self.create_export("/foo", 'cluster1', ['node1', 'node2'], 'CEPH', "security.selinux")
 
         exports = self._get("/api/nfs-ganesha/export")
         self.assertEqual(len(exports), 1)
index dd30114e491a11a2781a70ec08abc580f2265bee..bb9236babb77cd417f1bc7806b268f661b2b9fc7 100644 (file)
@@ -455,10 +455,12 @@ class RGWFSal(FSal):
 
 
 class CephFSFSal(FSal):
-    def __init__(self, name, user_id=None, fs_name=None, cephx_key=None):
+    def __init__(self, name, user_id=None, fs_name=None, sec_label_xattr=None,
+                 cephx_key=None):
         super(CephFSFSal, self).__init__(name)
         self.fs_name = fs_name
         self.user_id = user_id
+        self.sec_label_xattr = sec_label_xattr
         self.cephx_key = cephx_key
 
     @classmethod
@@ -484,6 +486,7 @@ class CephFSFSal(FSal):
         return cls(fsal_block['name'],
                    fsal_block.get('user_id', None),
                    fsal_block.get('filesystem', None),
+                   fsal_block.get('sec_label_xattr', None),
                    fsal_block.get('secret_access_key', None))
 
     def to_fsal_block(self):
@@ -495,6 +498,8 @@ class CephFSFSal(FSal):
             result['user_id'] = self.user_id
         if self.fs_name:
             result['filesystem'] = self.fs_name
+        if self.sec_label_xattr:
+            result['sec_label_xattr'] = self.sec_label_xattr
         if self.cephx_key:
             result['secret_access_key'] = self.cephx_key
         return result
@@ -502,13 +507,14 @@ class CephFSFSal(FSal):
     @classmethod
     def from_dict(cls, fsal_dict):
         return cls(fsal_dict['name'], fsal_dict['user_id'],
-                   fsal_dict['fs_name'], None)
+                   fsal_dict['fs_name'], fsal_dict['sec_label_xattr'], None)
 
     def to_dict(self):
         return {
             'name': self.name,
             'user_id': self.user_id,
-            'fs_name': self.fs_name
+            'fs_name': self.fs_name,
+            'sec_label_xattr': self.sec_label_xattr
         }
 
 
index 7446b2b899cb31148dd5b96d890109a7f22b5ed4..5e5ee374c1ddd921028e15a89ea5fb2cb83e6868 100644 (file)
@@ -163,6 +163,7 @@ EXPORT
         self.assertEqual(export.fsal.name, "CEPH")
         self.assertEqual(export.fsal.user_id, "ganesha")
         self.assertEqual(export.fsal.fs_name, "a")
+        self.assertEqual(export.fsal.sec_label_xattr, None)
         self.assertEqual(len(export.clients), 2)
         self.assertEqual(export.clients[0].addresses,
                          ["192.168.0.10", "192.168.1.0/8"])
@@ -234,6 +235,7 @@ EXPORT
         self.assertEqual(export.fsal.name, "CEPH")
         self.assertEqual(export.fsal.user_id, "ganesha")
         self.assertEqual(export.fsal.fs_name, "a")
+        self.assertEqual(export.fsal.sec_label_xattr, None)
         self.assertEqual(len(export.clients), 2)
         self.assertEqual(export.clients[0].addresses,
                          ["192.168.0.10", "192.168.1.0/8"])
@@ -289,7 +291,8 @@ EXPORT
             'fsal': {
                 'name': 'CEPH',
                 'user_id': 'ganesha',
-                'fs_name': 'a'
+                'fs_name': 'a',
+                'sec_label_xattr': None
             }
         })
 
@@ -339,7 +342,8 @@ EXPORT
             'fsal': {
                 'name': 'CEPH',
                 'user_id': 'ganesha',
-                'fs_name': 'a'
+                'fs_name': 'a',
+                'sec_label_xattr': 'security.selinux'
             }
         })
 
@@ -354,6 +358,7 @@ EXPORT
         self.assertEqual(export.fsal.name, "CEPH")
         self.assertEqual(export.fsal.user_id, "ganesha")
         self.assertEqual(export.fsal.fs_name, "a")
+        self.assertEqual(export.fsal.sec_label_xattr, 'security.selinux')
         self.assertEqual(len(export.clients), 2)
         self.assertEqual(export.clients[0].addresses,
                          ["192.168.0.10", "192.168.1.0/8"])
@@ -427,6 +432,7 @@ EXPORT
         self.assertEqual(export.fsal.name, "CEPH")
         self.assertEqual(export.fsal.user_id, "ganesha")
         self.assertEqual(export.fsal.fs_name, "a")
+        self.assertEqual(export.fsal.sec_label_xattr, None)
         self.assertEqual(len(export.clients), 2)
         self.assertEqual(export.clients[0].addresses,
                          ["192.168.0.10", "192.168.1.0/8"])
@@ -614,7 +620,8 @@ EXPORT
             'fsal': {
                 'name': 'CEPH',
                 'user_id': 'fs',
-                'fs_name': None
+                'fs_name': None,
+                'sec_label_xattr': 'security.selinux'
             }
         })
 
@@ -633,6 +640,7 @@ EXPORT
         self.assertEqual(export.fsal.name, "CEPH")
         self.assertEqual(export.fsal.user_id, "fs")
         self.assertEqual(export.fsal.cephx_key, "fs_key")
+        self.assertEqual(export.fsal.sec_label_xattr, "security.selinux")
         self.assertIsNone(export.fsal.fs_name)
         self.assertEqual(len(export.clients), 0)
         self.assertEqual(export.daemons, {"nodeb", "nodea"})