This is an automated email from the git hooks/post-receive script.
firstyear pushed a commit to branch master
in repository lib389.
commit c7f4d7eb1d67fea57a1af9de647f483b859b9af5
Author: Ilias Stamatis <stamatis.iliass(a)gmail.com>
Date: Thu Jun 29 14:11:12 2017 +0300
Issue 31 - Allow complete removal of some memberOf attrs
Description: #49284 is now fixed. Add code for complete removal of
memberOfEntryScope and memberOfEntryScopeExcludeSubtree attributes.
This was not possible before because of a bug in DS.
https://pagure.io/lib389/issue/31
Author: Ilias95
Review by: wibrown (Thanks!)
---
lib389/cli_conf/plugins/memberof.py | 14 +++++
lib389/plugins.py | 8 +--
lib389/tests/cli/conf_plugins/memberof_test.py | 71 ++++++++++++++++++++------
lib389/tests/plugins/memberof_test.py | 5 +-
4 files changed, 75 insertions(+), 23 deletions(-)
diff --git a/lib389/cli_conf/plugins/memberof.py b/lib389/cli_conf/plugins/memberof.py
index 525bc34..74c13ab 100644
--- a/lib389/cli_conf/plugins/memberof.py
+++ b/lib389/cli_conf/plugins/memberof.py
@@ -155,6 +155,11 @@ def remove_scope(inst, basedn, log, args):
else:
log.info('successfully removed memberOfEntryScope value
"{}"'.format(args.value))
+def remove_all_scope(inst, basedn, log, args):
+ plugin = MemberOfPlugin(inst)
+ plugin.remove_all_entryscope()
+ log.info('successfully removed all memberOfEntryScope values')
+
def display_excludescope(inst, basedn, log, args):
plugin = MemberOfPlugin(inst)
val = plugin.get_excludescope_formatted()
@@ -186,6 +191,11 @@ def remove_excludescope(inst, basedn, log, args):
else:
log.info('successfully removed memberOfEntryScopeExcludeSubtree value
"{}"'.format(args.value))
+def remove_all_excludescope(inst, basedn, log, args):
+ plugin = MemberOfPlugin(inst)
+ plugin.remove_all_excludescope()
+ log.info('successfully removed all memberOfEntryScopeExcludeSubtree values')
+
def fixup(inst, basedn, log, args):
plugin = MemberOfPlugin(inst)
log.info('Attempting to add task entry... This will fail if MemberOf plug-in is
not enabled.')
@@ -257,6 +267,8 @@ def create_parser(subparsers):
del_scope_parser = scope_subcommands.add_parser('del', help='remove
memberofentryscope value')
del_scope_parser.set_defaults(func=remove_scope)
del_scope_parser.add_argument('value', help='The value to remove from
memberofentryscope')
+ delall_scope_parser = scope_subcommands.add_parser('delall', help='remove
all memberofentryscope values')
+ delall_scope_parser.set_defaults(func=remove_all_scope)
exclude_parser = subcommands.add_parser('exclude', help='get or manage
memberofentryscopeexcludesubtree')
exclude_parser.set_defaults(func=display_excludescope)
@@ -268,6 +280,8 @@ def create_parser(subparsers):
del_exclude_parser = exclude_subcommands.add_parser('del', help='remove
memberofentryscopeexcludesubtree value')
del_exclude_parser.set_defaults(func=remove_excludescope)
del_exclude_parser.add_argument('value', help='The value to remove from
memberofentryscopeexcludesubtree')
+ delall_exclude_parser = exclude_subcommands.add_parser('delall',
help='remove all memberofentryscopeexcludesubtree values')
+ delall_exclude_parser.set_defaults(func=remove_all_excludescope)
fixup_parser = subcommands.add_parser('fixup', help='run the fix-up task
for memberof plugin')
fixup_parser.set_defaults(func=fixup)
diff --git a/lib389/plugins.py b/lib389/plugins.py
index 4a9cc43..e497df2 100644
--- a/lib389/plugins.py
+++ b/lib389/plugins.py
@@ -241,8 +241,8 @@ class MemberOfPlugin(Plugin):
def remove_entryscope(self, attr):
self.remove('memberofentryscope', attr)
- # def remove_all_entryscope(self):
- # self.remove_all('memberofentryscope')
+ def remove_all_entryscope(self):
+ self.remove_all('memberofentryscope')
def get_excludescope(self):
return self.get_attr_vals('memberofentryscopeexcludesubtree')
@@ -256,8 +256,8 @@ class MemberOfPlugin(Plugin):
def remove_excludescope(self, attr):
self.remove('memberofentryscopeexcludesubtree', attr)
- # def remove_all_excludescope(self):
- # self.remove_all('memberofentryscopeexcludesubtree')
+ def remove_all_excludescope(self):
+ self.remove_all('memberofentryscopeexcludesubtree')
def fixup(self, basedn, _filter=None):
task = tasks.MemberOfFixupTask(self._instance)
diff --git a/lib389/tests/cli/conf_plugins/memberof_test.py
b/lib389/tests/cli/conf_plugins/memberof_test.py
index e05b629..d6dcdba 100644
--- a/lib389/tests/cli/conf_plugins/memberof_test.py
+++ b/lib389/tests/cli/conf_plugins/memberof_test.py
@@ -311,17 +311,10 @@ def test_remove_entryscope_with_existing_value(topology):
args.value = None
memberof_cli.display_scope(topology.standalone, None, topology.logcap.log, args)
+ assert topology.logcap.contains(": dc=example,dc=com")
assert not topology.logcap.contains(": a=b")
topology.logcap.flush()
- # THIS MAKES THE SERVER CRASH!!!
- # caused when trying to remove all memberofentryscope values
-
- # args.value = "dc=example,dc=com"
- # memberof_cli.remove_scope(topology.standalone, None, topology.logcap.log, args)
- # assert topology.logcap.contains("successfully removed value")
- # topology.logcap.flush()
-
def test_remove_entryscope_with_non_existing_value(topology):
args = FakeArgs()
@@ -330,6 +323,33 @@ def test_remove_entryscope_with_non_existing_value(topology):
assert topology.logcap.contains('No value "{0}"
found'.format(args.value))
topology.logcap.flush()
+def test_remove_all_entryscope(topology):
+ plugin = MemberOfPlugin(topology.standalone)
+ # setup test
+ if not "dc=example,dc=com" in plugin.get_entryscope():
+ plugin.add_entryscope("dc=example,dc=com")
+ if not "a=b" in plugin.get_entryscope():
+ plugin.add_entryscope("a=b")
+
+ args = FakeArgs()
+
+ args.value = None
+ memberof_cli.display_scope(topology.standalone, None, topology.logcap.log, args)
+ assert topology.logcap.contains(": a=b")
+ assert topology.logcap.contains(": dc=example,dc=com")
+ topology.logcap.flush()
+
+ args.value = None
+ memberof_cli.remove_all_scope(topology.standalone, None, topology.logcap.log, args)
+ assert topology.logcap.contains("successfully removed all memberOfEntryScope
values")
+ topology.logcap.flush()
+
+ args.value = None
+ memberof_cli.display_scope(topology.standalone, None, topology.logcap.log, args)
+ assert not topology.logcap.contains(": a=b")
+ assert not topology.logcap.contains(": dc=example,dc=com")
+ topology.logcap.flush()
+
def test_get_excludescope_when_not_set(topology):
args = FakeArgs()
@@ -404,14 +424,6 @@ def test_remove_excludescope_with_existing_value(topology):
assert not topology.logcap.contains(": a=b")
topology.logcap.flush()
- # THIS MAKES THE SERVER CRASH!!!
- # caused when trying to remove all memberofentryscopeexcludesubtree values
-
- # args.value = "ou=People,dc=example,dc=com"
- # memberof_cli.remove_excludescope(topology.standalone, None, topology.logcap.log,
args)
- # assert topology.logcap.contains("successfully removed value")
- # topology.logcap.flush()
-
def test_remove_excludescope_with_non_existing_value(topology):
args = FakeArgs()
@@ -420,6 +432,33 @@ def test_remove_excludescope_with_non_existing_value(topology):
assert topology.logcap.contains('No value "{0}"
found'.format(args.value))
topology.logcap.flush()
+def test_remove_all_excludescope(topology):
+ plugin = MemberOfPlugin(topology.standalone)
+ # setup test
+ if not "a=b" in plugin.get_excludescope():
+ plugin.add_excludescope("a=b")
+ if not "ou=People,dc=example,dc=com" in plugin.get_excludescope():
+ plugin.add_excludescope("ou=People,dc=example,dc=com")
+
+ args = FakeArgs()
+
+ args.value = None
+ memberof_cli.display_excludescope(topology.standalone, None, topology.logcap.log,
args)
+ assert topology.logcap.contains(": a=b")
+ assert topology.logcap.contains(": ou=People,dc=example,dc=com")
+ topology.logcap.flush()
+
+ args.value = None
+ memberof_cli.remove_all_excludescope(topology.standalone, None, topology.logcap.log,
args)
+ assert topology.logcap.contains("successfully removed all
memberOfEntryScopeExcludeSubtree values")
+ topology.logcap.flush()
+
+ args.value = None
+ memberof_cli.display_excludescope(topology.standalone, None, topology.logcap.log,
args)
+ assert not topology.logcap.contains(": a=b")
+ assert not topology.logcap.contains(": ou=People,dc=example,dc=com")
+ topology.logcap.flush()
+
def test_add_entryscope_with_value_that_exists_in_excludescope(topology):
plugin = MemberOfPlugin(topology.standalone)
# setup test
diff --git a/lib389/tests/plugins/memberof_test.py
b/lib389/tests/plugins/memberof_test.py
index f569b93..9bafc60 100644
--- a/lib389/tests/plugins/memberof_test.py
+++ b/lib389/tests/plugins/memberof_test.py
@@ -306,9 +306,8 @@ def test_scoping(plugin):
# clean up for subsequent test cases
delete_objects([user_p1, user_p2, group, ou2])
- # This does not work at the moment, because there is a bug in DS (#49284).
- # plugin.remove_all_excludescope()
- # plugin.remove_all_entryscope()
+ plugin.remove_all_excludescope()
+ plugin.remove_all_entryscope()
def test_fixup_task(plugin):
"""
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.