mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2024-12-23 07:33:27 -06:00
Inconsistent sysrestore file handling by IPA server installer
IPA server/replica uninstallation may fail when it tries to restore a Directory server configuration file in sysrestore directory, which was already restored before. The problem is in Directory Server uninstaller which uses and modifies its own image of sysrestore directory state instead of using the common uninstaller image. https://fedorahosted.org/freeipa/ticket/1026
This commit is contained in:
parent
620903ff27
commit
f785af4efe
@ -416,7 +416,7 @@ def uninstall():
|
||||
bindinstance.BindInstance(fstore).uninstall()
|
||||
httpinstance.HTTPInstance(fstore).uninstall()
|
||||
krbinstance.KrbInstance(fstore).uninstall()
|
||||
dsinstance.DsInstance().uninstall()
|
||||
dsinstance.DsInstance(fstore=fstore).uninstall()
|
||||
fstore.restore_all_files()
|
||||
try:
|
||||
os.remove(ANSWER_CACHE)
|
||||
@ -779,7 +779,7 @@ def main():
|
||||
service.start('messagebus')
|
||||
|
||||
# Create a directory server instance
|
||||
ds = dsinstance.DsInstance()
|
||||
ds = dsinstance.DsInstance(fstore=fstore)
|
||||
|
||||
if options.dirsrv_pin:
|
||||
[pw_fd, pw_name] = tempfile.mkstemp()
|
||||
|
@ -190,6 +190,7 @@ class FileStore:
|
||||
backup_path = os.path.join(self._path, filename)
|
||||
if not os.path.exists(backup_path):
|
||||
logging.debug(" -> Not restoring - '%s' doesn't exist", backup_path)
|
||||
continue
|
||||
|
||||
shutil.move(backup_path, path)
|
||||
os.chown(path, int(uid), int(gid))
|
||||
|
@ -171,7 +171,7 @@ info: IPA V2.0
|
||||
"""
|
||||
|
||||
class DsInstance(service.Service):
|
||||
def __init__(self, realm_name=None, domain_name=None, dm_password=None):
|
||||
def __init__(self, realm_name=None, domain_name=None, dm_password=None, fstore=None):
|
||||
service.Service.__init__(self, "dirsrv", dm_password=dm_password)
|
||||
self.realm_name = realm_name
|
||||
self.sub_dict = None
|
||||
@ -189,7 +189,10 @@ class DsInstance(service.Service):
|
||||
else:
|
||||
self.suffix = None
|
||||
|
||||
self.fstore = sysrestore.FileStore('/var/lib/ipa/sysrestore')
|
||||
if fstore:
|
||||
self.fstore = fstore
|
||||
else:
|
||||
self.fstore = sysrestore.FileStore('/var/lib/ipa/sysrestore')
|
||||
|
||||
|
||||
def __common_setup(self):
|
||||
|
Loading…
Reference in New Issue
Block a user