From: Ricardo Dias Date: Wed, 30 Jan 2019 10:28:37 +0000 (+0000) Subject: mgr/dashboard: ganesha: add support for sec_label_xattr CEPH fsal attribute X-Git-Tag: v14.1.0~199^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=eabb054b1a7d57c76fde9ce85a7e63b0d465fa1e;p=ceph.git mgr/dashboard: ganesha: add support for sec_label_xattr CEPH fsal attribute Signed-off-by: Ricardo Dias --- diff --git a/qa/tasks/mgr/dashboard/test_ganesha.py b/qa/tasks/mgr/dashboard/test_ganesha.py index 4e9da79853d4..f58fe3c9e1b2 100644 --- a/qa/tasks/mgr/dashboard/test_ganesha.py +++ b/qa/tasks/mgr/dashboard/test_ganesha.py @@ -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) diff --git a/src/pybind/mgr/dashboard/services/ganesha.py b/src/pybind/mgr/dashboard/services/ganesha.py index dd30114e491a..bb9236babb77 100644 --- a/src/pybind/mgr/dashboard/services/ganesha.py +++ b/src/pybind/mgr/dashboard/services/ganesha.py @@ -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 } diff --git a/src/pybind/mgr/dashboard/tests/test_ganesha.py b/src/pybind/mgr/dashboard/tests/test_ganesha.py index 7446b2b899cb..5e5ee374c1dd 100644 --- a/src/pybind/mgr/dashboard/tests/test_ganesha.py +++ b/src/pybind/mgr/dashboard/tests/test_ganesha.py @@ -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"})