mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2026-08-17 16:34:56 -05:00
Fix restoring services status during uninstall
Services hasn't been restored correctly, which causes disabling already disabled services, or some service did not start. This patch fix these issues. Ticket: https://fedorahosted.org/freeipa/ticket/4869 Reviewed-By: David Kupka <dkupka@redhat.com>
This commit is contained in:
committed by
Martin Kosek
parent
76d401bb88
commit
c3edfa2d8c
@@ -1179,8 +1179,6 @@ class BindInstance(service.Service):
|
||||
|
||||
self.dns_backup.clear_records(api.Backend.ldap2.isconnected())
|
||||
|
||||
if not running is None:
|
||||
self.stop()
|
||||
|
||||
for f in [NAMED_CONF, RESOLV_CONF]:
|
||||
try:
|
||||
@@ -1189,11 +1187,12 @@ class BindInstance(service.Service):
|
||||
root_logger.debug(error)
|
||||
pass
|
||||
|
||||
if not enabled is None and not enabled:
|
||||
self.disable()
|
||||
# disabled by default, by ldap_enable()
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
if not running is None and running:
|
||||
self.start()
|
||||
if running:
|
||||
self.restart()
|
||||
|
||||
self.named_regular.unmask()
|
||||
if named_regular_enabled:
|
||||
|
||||
@@ -1273,8 +1273,10 @@ class CAInstance(DogtagInstance):
|
||||
|
||||
def uninstall(self):
|
||||
enabled = self.restore_state("enabled")
|
||||
if not enabled is None and not enabled:
|
||||
self.disable()
|
||||
|
||||
# disabled by default, by ldap_enable()
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
if self.dogtag_constants.DOGTAG_VERSION >= 10:
|
||||
DogtagInstance.uninstall(self)
|
||||
|
||||
@@ -124,8 +124,6 @@ class DNSKeySyncInstance(service.Service):
|
||||
self.fqdn = fqdn
|
||||
self.realm = realm_name
|
||||
self.suffix = ipautil.realm_to_suffix(self.realm)
|
||||
self.backup_state("enabled", self.is_enabled())
|
||||
self.backup_state("running", self.is_running())
|
||||
try:
|
||||
self.stop()
|
||||
except:
|
||||
@@ -417,7 +415,6 @@ class DNSKeySyncInstance(service.Service):
|
||||
self.suffix, self.extra_config)
|
||||
except errors.DuplicateEntry:
|
||||
self.logger.error("DNSKeySync service already exists")
|
||||
self.enable()
|
||||
|
||||
def __setup_principal(self):
|
||||
assert self.ods_gid is not None
|
||||
@@ -480,11 +477,13 @@ class DNSKeySyncInstance(service.Service):
|
||||
|
||||
self.print_msg("Unconfiguring %s" % self.service_name)
|
||||
|
||||
running = self.restore_state("running")
|
||||
enabled = self.restore_state("enabled")
|
||||
# Just eat states
|
||||
self.restore_state("running")
|
||||
self.restore_state("enabled")
|
||||
|
||||
if running is not None:
|
||||
self.stop()
|
||||
# stop and disable service (IPA service, we do not need it anymore)
|
||||
self.stop()
|
||||
self.disable()
|
||||
|
||||
for f in [paths.SYSCONFIG_NAMED]:
|
||||
try:
|
||||
@@ -500,9 +499,3 @@ class DNSKeySyncInstance(service.Service):
|
||||
os.remove(paths.DNSSEC_SOFTHSM_PIN)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if enabled is not None and not enabled:
|
||||
self.disable()
|
||||
|
||||
if running is not None and running:
|
||||
self.start()
|
||||
|
||||
@@ -771,8 +771,9 @@ class DsInstance(service.Service):
|
||||
root_logger.debug(error)
|
||||
pass
|
||||
|
||||
if not enabled is None and not enabled:
|
||||
self.disable()
|
||||
# disabled during IPA installation
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
serverid = self.restore_state("serverid")
|
||||
if serverid is not None:
|
||||
|
||||
@@ -146,7 +146,7 @@ class HTTPInstance(service.Service):
|
||||
self.restart()
|
||||
|
||||
def __enable(self):
|
||||
self.backup_state("enabled", self.is_running())
|
||||
self.backup_state("enabled", self.is_enabled())
|
||||
# We do not let the system start IPA components on its own,
|
||||
# Instead we reply on the IPA init script to start only enabled
|
||||
# components as found in our LDAP configuration tree
|
||||
@@ -388,8 +388,6 @@ class HTTPInstance(service.Service):
|
||||
running = self.restore_state("running")
|
||||
enabled = self.restore_state("enabled")
|
||||
|
||||
if not running is None:
|
||||
self.stop()
|
||||
|
||||
self.stop_tracking_certificates()
|
||||
|
||||
@@ -407,9 +405,6 @@ class HTTPInstance(service.Service):
|
||||
ca_iface.Set('org.fedorahosted.certmonger.ca',
|
||||
'external-helper', helper)
|
||||
|
||||
if not enabled is None and not enabled:
|
||||
self.disable()
|
||||
|
||||
for f in [paths.HTTPD_IPA_CONF, paths.HTTPD_SSL_CONF, paths.HTTPD_NSS_CONF]:
|
||||
try:
|
||||
self.fstore.restore_file(f)
|
||||
@@ -430,8 +425,12 @@ class HTTPInstance(service.Service):
|
||||
except ipapython.errors.SetseboolError as e:
|
||||
self.print_msg('WARNING: ' + str(e))
|
||||
|
||||
if not running is None and running:
|
||||
self.start()
|
||||
if running:
|
||||
self.restart()
|
||||
|
||||
# disabled by default, by ldap_enable()
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
def stop_tracking_certificates(self):
|
||||
db = certs.CertDB(api.env.realm)
|
||||
|
||||
@@ -454,11 +454,12 @@ class KrbInstance(service.Service):
|
||||
root_logger.debug(error)
|
||||
pass
|
||||
|
||||
if not enabled is None and not enabled:
|
||||
self.disable()
|
||||
# disabled by default, by ldap_enable()
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
if not running is None and running:
|
||||
self.start()
|
||||
if running:
|
||||
self.restart()
|
||||
|
||||
self.kpasswd = KpasswdInstance()
|
||||
self.kpasswd.uninstall()
|
||||
|
||||
@@ -165,8 +165,10 @@ class NTPInstance(service.Service):
|
||||
running = self.restore_state("running")
|
||||
enabled = self.restore_state("enabled")
|
||||
|
||||
if not running is None:
|
||||
self.stop()
|
||||
# service is not in LDAP, stop and disable service
|
||||
# before restoring configuration
|
||||
self.stop()
|
||||
self.disable()
|
||||
|
||||
try:
|
||||
self.fstore.restore_file(paths.NTP_CONF)
|
||||
@@ -174,8 +176,8 @@ class NTPInstance(service.Service):
|
||||
root_logger.debug(error)
|
||||
pass
|
||||
|
||||
if not enabled is None and not enabled:
|
||||
self.disable()
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
if not running is None and running:
|
||||
self.start()
|
||||
if running:
|
||||
self.restart()
|
||||
|
||||
@@ -82,7 +82,6 @@ class ODSExporterInstance(service.Service):
|
||||
self.suffix)
|
||||
except errors.DuplicateEntry:
|
||||
root_logger.error("DNSKeyExporter service already exists")
|
||||
self.enable()
|
||||
|
||||
def __setup_key_exporter(self):
|
||||
installutils.set_directive(paths.SYSOCNFIG_IPA_ODS_EXPORTER,
|
||||
@@ -155,14 +154,13 @@ class ODSExporterInstance(service.Service):
|
||||
|
||||
self.print_msg("Unconfiguring %s" % self.service_name)
|
||||
|
||||
running = self.restore_state("running")
|
||||
enabled = self.restore_state("enabled")
|
||||
# just eat states
|
||||
self.restore_state("running")
|
||||
self.restore_state("enabled")
|
||||
|
||||
if enabled is not None and not enabled:
|
||||
self.disable()
|
||||
|
||||
if running is not None and running:
|
||||
self.start()
|
||||
# stop and disable service (IPA service, we do not need it anymore)
|
||||
self.disable()
|
||||
self.stop()
|
||||
|
||||
# restore state of dnssec default signer daemon
|
||||
signerd_enabled = self.restore_state("singerd_enabled")
|
||||
|
||||
@@ -149,7 +149,6 @@ class OpenDNSSECInstance(service.Service):
|
||||
self.suffix, self.extra_config)
|
||||
except errors.DuplicateEntry:
|
||||
root_logger.error("DNSSEC service already exists")
|
||||
self.enable()
|
||||
|
||||
def __setup_conf_files(self):
|
||||
if not self.fstore.has_file(paths.OPENDNSSEC_CONF_FILE):
|
||||
@@ -292,8 +291,9 @@ class OpenDNSSECInstance(service.Service):
|
||||
root_logger.debug(error)
|
||||
pass
|
||||
|
||||
if enabled is not None and not enabled:
|
||||
self.disable()
|
||||
# disabled by default, by ldap_enable()
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
if running is not None and running:
|
||||
self.start()
|
||||
if running:
|
||||
self.restart()
|
||||
|
||||
@@ -518,11 +518,14 @@ class SimpleServiceInstance(Service):
|
||||
if self.is_configured():
|
||||
self.print_msg("Unconfiguring %s" % self.service_name)
|
||||
|
||||
running = self.restore_state("running")
|
||||
enabled = not self.restore_state("enabled")
|
||||
self.stop()
|
||||
self.disable()
|
||||
|
||||
if not running is None and not running:
|
||||
self.stop()
|
||||
if not enabled is None and not enabled:
|
||||
self.disable()
|
||||
self.remove()
|
||||
running = self.restore_state("running")
|
||||
enabled = self.restore_state("enabled")
|
||||
|
||||
# restore the original state of service
|
||||
if running:
|
||||
self.start()
|
||||
if enabled:
|
||||
self.enable()
|
||||
|
||||
Reference in New Issue
Block a user