URL: https://github.com/freeipa/freeipa/pull/2963 Author: xxblx Title: #2963: [Backport][ipa-4-7] Show a notification that sssd needs restarting after idrange-mod using Action: opened
PR body: """ Manual backport of PR #2942 to ipa-4-7. """ To pull the PR as Git branch: git remote add ghfreeipa https://github.com/freeipa/freeipa git fetch ghfreeipa pull/2963/head:pr2963 git checkout pr2963
From 52dcfbd0a266a0fe1f16b6151162a1d412966233 Mon Sep 17 00:00:00 2001 From: Oleg Kozlov <xx...@posteo.org> Date: Fri, 29 Mar 2019 14:39:34 +0100 Subject: [PATCH] Show a notification that sssd needs restarting after idrange-mod If the `ipa idrange-mod` command has been used show a notification that sssd.service needs restarting. It's needed for applying changes. E.g. after setup AD trust with a domain with more than 200000 objects (the highest RID > idm's default value, 200000) users with RIDs > 200000 are not able to login, the size needs to be increased via idrange-mod, but it makes an effect only after sssd restarting. Implementation: Notification was implemented via passing `ipalib.messages.ServiceRestartRequired` to `add_message` method in `ipaserver.plugins.idrange.idrange_mod.post_callback`. Tests: Added `messages` with sssd restart required (`ipalib.messages.ServiceRestartRequired`) to cases with idrange_mod where output is expected in `ipatests.test_xmlrpc.test_range_plugin.test_range'. Fixes: https://pagure.io/freeipa/issue/7708 --- ipaplatform/base/services.py | 2 +- ipaserver/plugins/idrange.py | 9 ++++++++- ipatests/test_xmlrpc/test_range_plugin.py | 15 ++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ipaplatform/base/services.py b/ipaplatform/base/services.py index 51c27848d7..09987100bd 100644 --- a/ipaplatform/base/services.py +++ b/ipaplatform/base/services.py @@ -54,7 +54,7 @@ 'rpcbind', 'kadmin', 'sshd', 'autofs', 'rpcgssd', 'rpcidmapd', 'pki_tomcatd', 'chronyd', 'domainname', 'named', 'ods_enforcerd', 'ods_signerd', 'gssproxy', - 'nfs-utils'] + 'nfs-utils', 'sssd'] # The common ports for these services. This is used to wait for the # service to become available. diff --git a/ipaserver/plugins/idrange.py b/ipaserver/plugins/idrange.py index 8cdcbdabda..ebf839b09f 100644 --- a/ipaserver/plugins/idrange.py +++ b/ipaserver/plugins/idrange.py @@ -22,8 +22,9 @@ from ipalib.plugable import Registry from .baseldap import (LDAPObject, LDAPCreate, LDAPDelete, LDAPRetrieve, LDAPSearch, LDAPUpdate) -from ipalib import api, Int, Str, StrEnum, _, ngettext +from ipalib import api, Int, Str, StrEnum, _, ngettext, messages from ipalib import errors +from ipaplatform import services from ipapython.dn import DN if six.PY3: @@ -764,4 +765,10 @@ def post_callback(self, ldap, dn, entry_attrs, *keys, **options): assert isinstance(dn, DN) self.obj.handle_ipabaserid(entry_attrs, options) self.obj.handle_iparangetype(entry_attrs, options) + self.add_message( + messages.ServiceRestartRequired( + service=services.knownservices['sssd'].systemd_name, + server=keys[0] + ) + ) return dn diff --git a/ipatests/test_xmlrpc/test_range_plugin.py b/ipatests/test_xmlrpc/test_range_plugin.py index 0a8f66b62d..20c9d2a523 100644 --- a/ipatests/test_xmlrpc/test_range_plugin.py +++ b/ipatests/test_xmlrpc/test_range_plugin.py @@ -23,7 +23,8 @@ import six -from ipalib import api, errors +from ipalib import api, errors, messages +from ipaplatform import services from ipatests.test_xmlrpc.xmlrpc_test import Declarative, fuzzy_uuid from ipatests.test_xmlrpc import objectclasses from ipatests.util import MockLDAP @@ -786,6 +787,12 @@ def teardown_class(cls): command=('idrange_mod', [domain3range2], dict(ipabaseid=domain3range1_base_id)), expected=dict( + messages=( + messages.ServiceRestartRequired( + service=services.knownservices['sssd'].systemd_name, + server=domain3range2 + ).to_dict(), + ), result=dict( cn=[domain3range2], ipabaseid=[unicode(domain3range1_base_id)], @@ -851,6 +858,12 @@ def teardown_class(cls): command=('idrange_mod', [domain2range1], dict(ipabaserid=domain5range1_base_rid)), expected=dict( + messages=( + messages.ServiceRestartRequired( + service=services.knownservices['sssd'].systemd_name, + server=domain2range1 + ).to_dict(), + ), result=dict( cn=[domain2range1], ipabaseid=[unicode(domain2range1_base_id)],
_______________________________________________ FreeIPA-devel mailing list -- freeipa-devel@lists.fedorahosted.org To unsubscribe send an email to freeipa-devel-le...@lists.fedorahosted.org Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedorahosted.org/archives/list/freeipa-devel@lists.fedorahosted.org