mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Correctly handle EmptyModlist exception in pwpolicy2-mod.
EmptyModlist exception was generated by pwpolicy2-mod when modifying policy priority only. It was because the priority attribute is stored outside of the policy entry (in a CoS entry) and there was nothing left to be changed in the policy entry. This patch uses the new exception callbacks in baseldap.py classes to catch the EmptyModlist exception and checks if there was really nothing to be modified before reraising the exception.
This commit is contained in:
committed by
Rob Crittenden
parent
7993719329
commit
64490a3ee0
@@ -276,12 +276,19 @@ class pwpolicy2_mod(LDAPUpdate):
|
||||
def post_callback(self, ldap, dn, entry_attrs, *keys, **options):
|
||||
if not options.get('raw', False):
|
||||
if options.get('cospriority') is not None:
|
||||
entry_attrs['cospriority'] = [unicode(options['copriority'])]
|
||||
entry_attrs['cospriority'] = [unicode(options['cospriority'])]
|
||||
if keys[-1] is None:
|
||||
entry_attrs['cn'] = GLOBAL_POLICY_NAME
|
||||
self.obj.convert_time_for_output(entry_attrs, **options)
|
||||
return dn
|
||||
|
||||
def exc_callback(self, keys, options, exc, call_func, *call_args, **call_kwargs):
|
||||
if isinstance(exc, errors.EmptyModlist):
|
||||
entry_attrs = call_args[1]
|
||||
if not entry_attrs and 'cospriority' in options:
|
||||
return
|
||||
raise exc
|
||||
|
||||
api.register(pwpolicy2_mod)
|
||||
|
||||
|
||||
@@ -340,12 +347,13 @@ class pwpolicy2_find(LDAPSearch):
|
||||
except errors.NotFound:
|
||||
pass
|
||||
self.obj.convert_time_for_output(e[1], **options)
|
||||
global_entry = self.api.Command.pwpolicy2_show(
|
||||
all=options.get('all', False), raw=options.get('raw', False)
|
||||
)['result']
|
||||
dn = global_entry['dn']
|
||||
del global_entry['dn']
|
||||
entries.insert(0, (dn, global_entry))
|
||||
if not args[-1]:
|
||||
global_entry = self.api.Command.pwpolicy2_show(
|
||||
all=options.get('all', False), raw=options.get('raw', False)
|
||||
)['result']
|
||||
dn = global_entry['dn']
|
||||
del global_entry['dn']
|
||||
entries.insert(0, (dn, global_entry))
|
||||
|
||||
api.register(pwpolicy2_find)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user