summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--install/share/root-autobind.ldif5
-rwxr-xr-xinstall/tools/ipa-ldap-updater21
-rw-r--r--ipaserver/install/installutils.py22
-rw-r--r--ipaserver/install/upgradeinstance.py24
4 files changed, 35 insertions, 37 deletions
diff --git a/install/share/root-autobind.ldif b/install/share/root-autobind.ldif
index e7bbc8dbe..ecce11511 100644
--- a/install/share/root-autobind.ldif
+++ b/install/share/root-autobind.ldif
@@ -17,8 +17,3 @@ changetype: modify
replace: nsslapd-ldapimaptoentries
nsslapd-ldapimaptoentries: on
-dn: cn=config
-changetype: modify
-replace: nsslapd-ldapientrysearchbase
-nsslapd-ldapientrysearchbase: cn=config
-
diff --git a/install/tools/ipa-ldap-updater b/install/tools/ipa-ldap-updater
index ddf222e08..ec57109d3 100755
--- a/install/tools/ipa-ldap-updater
+++ b/install/tools/ipa-ldap-updater
@@ -78,6 +78,7 @@ def get_dirman_password():
def main():
loglevel = logging.INFO
badsyntax = False
+ upgradefailed = False
safe_options, options, args = parse_options()
if options.debug:
@@ -102,24 +103,26 @@ def main():
if len(args) > 0:
files = args
+ # Clear all existing log handler
+ loggers = logging.getLogger()
+ if loggers.handlers:
+ for handler in loggers.handlers:
+ loggers.removeHandler(handler)
if options.upgrade:
if os.getegid() != 0:
sys.exit('Upgrade can only be done as root')
logging.basicConfig(level=loglevel,
- format='%(levelname)s %(message)s',
- filename='/var/log/ipaupgrade.log')
+ format='%(asctime)s %(levelname)s %(message)s',
+ filename='/var/log/ipaupgrade.log',
+ filemode='a')
logging.debug('%s was invoked with arguments %s and options: %s' % (sys.argv[0], args, safe_options))
realm = krbV.default_context().default_realm
upgrade = IPAUpgrade(realm, files, live_run=not options.test)
upgrade.create_instance()
modified = upgrade.modified
badsyntax = upgrade.badsyntax
+ upgradefailed = upgrade.upgradefailed
else:
- # Clear all existing log handlers, this is need to log as root
- loggers = logging.getLogger()
- if loggers.handlers:
- for handler in loggers.handlers:
- loggers.removeHandler(handler)
logging.basicConfig(level=loglevel,
format='%(levelname)s %(message)s')
ld = LDAPUpdate(dm_password=dirman_password, sub_dict={}, live_run=not options.test, ldapi=options.ldapi)
@@ -128,6 +131,10 @@ def main():
modified = ld.update(files)
if badsyntax:
+ print 'Bad syntax detected in upgrade file(s).'
+ return 1
+ elif upgradefailed:
+ print 'IPA upgrade failed.'
return 1
elif modified and options.test:
return 2
diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py
index d203f4f93..8d93a60b3 100644
--- a/ipaserver/install/installutils.py
+++ b/ipaserver/install/installutils.py
@@ -330,6 +330,8 @@ def update_file(filename, orig, subst):
def set_directive(filename, directive, value, quotes=True, separator=' '):
"""Set a name/value pair directive in a configuration file.
+ A value of None means to drop the directive.
+
This has only been tested with nss.conf
"""
valueset = False
@@ -339,18 +341,20 @@ def set_directive(filename, directive, value, quotes=True, separator=' '):
for line in fd:
if directive in line:
valueset = True
- if quotes:
- newfile.append('%s%s"%s"\n' % (directive, separator, value))
- else:
- newfile.append('%s%s%s\n' % (directive, separator, value))
+ if value is not None:
+ if quotes:
+ newfile.append('%s%s"%s"\n' % (directive, separator, value))
+ else:
+ newfile.append('%s%s%s\n' % (directive, separator, value))
else:
newfile.append(line)
fd.close()
if not valueset:
- if quotes:
- newfile.append('%s%s"%s"\n' % (directive, separator, value))
- else:
- newfile.append('%s%s%s\n' % (directive, separator, value))
+ if value is not None:
+ if quotes:
+ newfile.append('%s%s"%s"\n' % (directive, separator, value))
+ else:
+ newfile.append('%s%s%s\n' % (directive, separator, value))
fd = open(filename, "w")
fd.write("".join(newfile))
@@ -401,7 +405,7 @@ def wait_for_open_ports(host, ports, timeout=0):
op_timeout = time.time() + timeout
ipv6_failover = False
-
+
for port in ports:
while True:
try:
diff --git a/ipaserver/install/upgradeinstance.py b/ipaserver/install/upgradeinstance.py
index ad977b745..2f42358b7 100644
--- a/ipaserver/install/upgradeinstance.py
+++ b/ipaserver/install/upgradeinstance.py
@@ -21,6 +21,7 @@ import os
import sys
import shutil
import random
+import logging
from ipaserver.install import installutils
from ipaserver.install import dsinstance
@@ -56,6 +57,7 @@ class IPAUpgrade(service.Service):
self.files = files
self.modified = False
self.badsyntax = False
+ self.upgradefailed = False
def create_instance(self):
self.step("stopping directory server", self.stop)
@@ -75,41 +77,26 @@ class IPAUpgrade(service.Service):
separator=':')
security = installutils.get_directive(self.filename, 'nsslapd-security',
separator=':')
- autobind = installutils.get_directive(self.filename,
- 'nsslapd-ldapiautobind', separator=':')
- searchbase = installutils.get_directive(self.filename,
- 'nsslapd-ldapientrysearchbase', separator=':')
self.backup_state('nsslapd-port', port)
self.backup_state('nsslapd-security', security)
- self.backup_state('nsslapd-ldapiautobind', autobind)
- self.backup_state('nsslapd-ldapientrysearchbase', searchbase)
def __restore_config(self):
port = self.restore_state('nsslapd-port')
security = self.restore_state('nsslapd-security')
- autobind = self.restore_state('nsslapd-ldapiautobind')
- searchbase = self.restore_state('nsslapd-ldapientrysearchbase')
installutils.set_directive(self.filename, 'nsslapd-port',
port, quotes=False, separator=':')
installutils.set_directive(self.filename, 'nsslapd-security',
security, quotes=False, separator=':')
- installutils.set_directive(self.filename, 'nsslapd-ldapiautobind',
- autobind, quotes=False, separator=':')
- installutils.set_directive(self.filename,
- 'nsslapd-ldapientrysearchbase',
- searchbase, quotes=False, separator=':')
def __disable_listeners(self):
installutils.set_directive(self.filename, 'nsslapd-port',
0, quotes=False, separator=':')
installutils.set_directive(self.filename, 'nsslapd-security',
'off', quotes=False, separator=':')
- installutils.set_directive(self.filename, 'nsslapd-ldapiautobind',
- 'on', quotes=False, separator=':')
installutils.set_directive(self.filename, 'nsslapd-ldapientrysearchbase',
- '', quotes=False, separator=':')
+ None, quotes=False, separator=':')
def __upgrade(self):
try:
@@ -120,6 +107,11 @@ class IPAUpgrade(service.Service):
except ldapupdate.BadSyntax:
self.modified = False
self.badsyntax = True
+ except Exception, e:
+ # Bad things happened, return gracefully
+ self.modified = False
+ self.upgradefailed = True
+ logging.error('Upgrade failed with %s' % str(e))
def main():
if os.getegid() != 0: