From 8bba212c80163648ed3a6ba9cf77b1369a198053 Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Wed, 1 Feb 2012 17:51:24 +0200 Subject: Handle upgrade issues with systemd in Fedora 16 and above Since 389-ds-base-1.2.10-0.8.a7 Directory Server's systemd settings are configured via /etc/sysconfig/dirsrv.systemd. It means logic change in systemd/fedora16 platform of FreeIPA. Additionally, existing installs need to be handled during upgrade. Fixes: https://fedorahosted.org/freeipa/ticket/2117 https://fedorahosted.org/freeipa/ticket/2300 --- ipapython/platform/systemd.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'ipapython/platform/systemd.py') diff --git a/ipapython/platform/systemd.py b/ipapython/platform/systemd.py index 3f1fe730..ae06c022 100644 --- a/ipapython/platform/systemd.py +++ b/ipapython/platform/systemd.py @@ -137,16 +137,12 @@ class SystemdService(base.PlatformService): if len(instance_name) > 0 and l > 1: # New instance, we need to do following: - # 1. Copy @.service to /etc/systemd/system/ if it is not there - # 2. Make /etc/systemd/system/.target.wants/ if it is not there - # 3. Link /etc/systemd/system/.target.wants/@.service to - # /etc/systemd/system/@.service - srv_etc = os.path.join(self.SYSTEMD_ETC_PATH, self.service_name) + # 1. Make /etc/systemd/system/.target.wants/ if it is not there + # 2. Link /etc/systemd/system/.target.wants/@.service to + # /lib/systemd/system/@.service srv_tgt = os.path.join(self.SYSTEMD_ETC_PATH, self.SYSTEMD_SRV_TARGET % (elements[0])) srv_lnk = os.path.join(srv_tgt, self.service_instance(instance_name)) try: - if not ipautil.file_exists(srv_etc): - shutil.copy(self.lib_path, srv_etc) if not ipautil.dir_exists(srv_tgt): os.mkdir(srv_tgt) if os.path.exists(srv_lnk): @@ -156,11 +152,11 @@ class SystemdService(base.PlatformService): # object does not exist _or_ is a broken link if not os.path.islink(srv_lnk): # if it truly does not exist, make a link - os.symlink(srv_etc, srv_lnk) + os.symlink(self.lib_path, srv_lnk) else: # Link exists and it is broken, make new one os.unlink(srv_lnk) - os.symlink(srv_etc, srv_lnk) + os.symlink(self.lib_path, srv_lnk) ipautil.run(["/bin/systemctl", "--system", "daemon-reload"]) except: pass @@ -172,7 +168,7 @@ class SystemdService(base.PlatformService): if instance_name != "" and len(elements) > 1: # Remove instance, we need to do following: # Remove link from /etc/systemd/system/.target.wants/@.service - # to /etc/systemd/system/@.service + # to /lib/systemd/system/@.service srv_tgt = os.path.join(self.SYSTEMD_ETC_PATH, self.SYSTEMD_SRV_TARGET % (elements[0])) srv_lnk = os.path.join(srv_tgt, self.service_instance(instance_name)) try: -- cgit