install: add restart_dirsrv for directory server restarts

* Create a utility function to restart a directory server and
    reconnect the api.Backend.ldap2 connection.
* Use restart_dirsrv instead of knownservices.dirsrv.restart to
    ensure api.Backend.ldap2 is reconnected.

https://fedorahosted.org/freeipa/ticket/6461

Reviewed-By: Martin Basti <mbasti@redhat.com>
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
Tomas Krizek
2016-10-26 14:17:02 +02:00
committed by Martin Basti
parent e8aa2627c7
commit e05bdeb6cf
7 changed files with 19 additions and 17 deletions

View File

@@ -51,7 +51,7 @@ from ipapython.admintool import ScriptError
from ipapython.ipa_log_manager import root_logger
from ipalib.util import validate_hostname
from ipapython import config
from ipalib import errors, x509
from ipalib import api, errors, x509
from ipapython.dn import DN
from ipaserver.install import certs, service, sysupgrade
from ipaplatform import services
@@ -1399,3 +1399,14 @@ def remove_ccache(ccache_path=None, run_as=None):
except ipautil.CalledProcessError as e:
root_logger.warning(
"Failed to clear Kerberos credentials cache: {}".format(e))
def restart_dirsrv(instance_name="", capture_output=True):
"""
Restart Directory server and perform ldap reconnect.
"""
api.Backend.ldap2.disconnect()
services.knownservices.dirsrv.restart(instance_name=instance_name,
capture_output=capture_output,
wait=True, ldapi=True)
api.Backend.ldap2.connect()