"tag": None,
"access_type": "RW",
"squash": "no_root_squash",
+ "security_label": False,
"protocols": [4],
"transports": ["TCP"],
"clients": [{
export = self.test_create_export()
export['access_type'] = 'RO'
export['daemons'] = ['node1', 'node3']
+ export['security_label'] = True
data = self._task_put('/api/nfs-ganesha/export/{}/{}'
.format(export['cluster_id'], export['export_id']),
export)
self.assertEqual(len(exports), 1)
self.assertDictEqual(exports[0], data)
self.assertEqual(exports[0]['daemons'], ['node1', 'node3'])
+ self.assertEqual(exports[0]['security_label'], True)
def test_delete_export(self):
export = self.test_create_export()
@NfsTask('create', {'path': '{path}', 'fsal': '{fsal.name}',
'cluster_id': '{cluster_id}'}, 2.0)
def create(self, path, cluster_id, daemons, pseudo, tag, access_type,
- squash, protocols, transports, fsal, clients):
+ squash, security_label, protocols, transports, fsal, clients):
if fsal['name'] not in Ganesha.fsals_available():
raise NFSException("Cannot create this export. "
"FSAL '{}' cannot be managed by the dashboard."
'tag': tag,
'access_type': access_type,
'squash': squash,
+ 'security_label': security_label,
'protocols': protocols,
'transports': transports,
'fsal': fsal,
@NfsTask('edit', {'cluster_id': '{cluster_id}', 'export_id': '{export_id}'},
2.0)
def set(self, cluster_id, export_id, path, daemons, pseudo, tag, access_type,
- squash, protocols, transports, fsal, clients):
+ squash, security_label, protocols, transports, fsal, clients):
export_id = int(export_id)
ganesha_conf = GaneshaConf.instance(cluster_id)
'tag': tag,
'access_type': access_type,
'squash': squash,
+ 'security_label': security_label,
'protocols': protocols,
'transports': transports,
'fsal': fsal,
try:
return int(raw_value)
except ValueError:
- if raw_value.find('"') == 0:
+ if raw_value == "true":
+ return True
+ elif raw_value == "false":
+ return False
+ elif raw_value.find('"') == 0:
return raw_value[1:-1]
return raw_value
else:
def format_val(key, val):
if isinstance(val, list):
return ', '.join([format_val(key, v) for v in val])
+ elif isinstance(val, bool):
+ return str(val).lower()
elif isinstance(val, int) or (block['block_name'] == 'CLIENT'
and key == 'clients'):
return '{}'.format(val)
# pylint: disable=R0902
def __init__(self, export_id, path, fsal, cluster_id, daemons, pseudo=None,
tag=None, access_type=None, squash=None,
- attr_expiration_time=None,
+ attr_expiration_time=None, security_label=False,
protocols=None, transports=None, clients=None):
self.export_id = export_id
self.path = GaneshaConf.format_path(path)
self.attr_expiration_time = 0
else:
self.attr_expiration_time = attr_expiration_time
+ self.security_label = security_label
self.protocols = set([GaneshaConf.format_protocol(p) for p in protocols])
self.transports = set(transports)
self.clients = clients
result['squash'] = self.squash
if self.fsal.name == 'CEPH':
result['attr_expiration_time'] = self.attr_expiration_time
+ result['security_label'] = self.security_label
if 'protocols' not in defaults:
result['protocols'] = [p for p in self.protocols]
else:
ex_dict['access_type'],
ex_dict['squash'],
old_export.attr_expiration_time if old_export else None,
+ ex_dict['security_label'],
ex_dict['protocols'],
ex_dict['transports'],
[Client.from_dict(client) for client in ex_dict['clients']])
'tag': self.tag,
'access_type': self.access_type,
'squash': self.squash,
+ 'security_label': self.security_label,
'protocols': sorted([p for p in self.protocols]),
'transports': sorted([t for t in self.transports]),
'clients': [client.to_dict() for client in self.clients]
self.assertEqual(export.clients[1].access_type, "RO")
self.assertEqual(export.cluster_id, '_default_')
self.assertEqual(export.attr_expiration_time, 0)
+ self.assertEqual(export.security_label, False)
def test_export_parser_2(self):
blocks = GaneshaConfParser(self.export_2).parse()
self.assertEqual(export.clients[1].squash, "all_squash")
self.assertEqual(export.clients[1].access_type, "RO")
self.assertEqual(export.attr_expiration_time, 0)
+ self.assertEqual(export.security_label, False)
# export_id = 2 asserts
export = exports[2]
'tag': None,
'access_type': 'RW',
'squash': 'root_squash',
+ 'security_label': False,
'protocols': [4],
'transports': ['TCP', 'UDP'],
'clients': [{
'tag': None,
'access_type': 'RW',
'squash': 'all_squash',
+ 'security_label': False,
'protocols': [3, 4],
'transports': ['TCP', 'UDP'],
'clients': [],
'tag': None,
'access_type': 'RW',
'squash': 'root_squash',
+ 'security_label': True,
'protocols': [4],
'transports': ['TCP', 'UDP'],
'clients': [{
self.assertEqual(export.daemons, {"nodeb", "nodea"})
self.assertEqual(export.cluster_id, '_default_')
self.assertEqual(export.attr_expiration_time, 0)
+ self.assertEqual(export.security_label, True)
export = Export.from_dict(2, {
'daemons': ['nodea'],
'tag': None,
'access_type': 'RW',
'squash': 'all_squash',
+ 'security_label': False,
'protocols': [4, 3],
'transports': ['TCP', 'UDP'],
'clients': [],
self.assertEqual(export.daemons, {"nodeb", "nodea"})
self.assertEqual(export.cluster_id, '_default_')
self.assertEqual(export.attr_expiration_time, 0)
+ self.assertEqual(export.security_label, False)
# export_id = 2 asserts
export = exports[2]
conf = GaneshaConf.instance('_default_')
conf.update_export({
- 'export_id': 1,
+ 'export_id': 2,
'daemons': ["nodeb"],
'path': 'bucket',
'pseudo': '/rgw/bucket',
'tag': 'bucket_tag',
'access_type': 'RW',
'squash': 'all_squash',
+ 'security_label': False,
'protocols': [4, 3],
'transports': ['TCP', 'UDP'],
'clients': [{
})
conf = GaneshaConf.instance('_default_')
- export = conf.get_export(1)
- self.assertEqual(export.export_id, 1)
+ export = conf.get_export(2)
+ self.assertEqual(export.export_id, 2)
self.assertEqual(export.path, "bucket")
self.assertEqual(export.pseudo, "/rgw/bucket")
self.assertEqual(export.tag, "bucket_tag")
'cluster_id': '_default_',
'access_type': 'RW',
'squash': 'all_squash',
+ 'security_label': False,
'protocols': [4, 3],
'transports': ['TCP', 'UDP'],
'clients': [{
'tag': None,
'access_type': 'RW',
'squash': 'all_squash',
+ 'security_label': True,
'protocols': [4],
'transports': ['TCP'],
'clients': [],
self.assertEqual(export.daemons, {"nodeb", "nodea"})
self.assertEqual(export.cluster_id, '_default_')
self.assertEqual(export.attr_expiration_time, 0)
+ self.assertEqual(export.security_label, True)