From 15f282cf2c4a5315aa3e259bd923718685d88245 Mon Sep 17 00:00:00 2001 From: Martin Babinsky Date: Nov 11 2016 11:17:25 +0000 Subject: service installers: clean up the inheritance Instead of delegating handling of some parameters like fstore to the parent class, the *Instance installers had the logic copy-pasted in their constructors. Some other members were also moved to the Service class and the parent class constructors in children were fixed to modern standards of initializing parent class in Python. https://fedorahosted.org/freeipa/ticket/6392 Reviewed-By: Stanislav Laznicka --- diff --git a/ipaserver/install/adtrustinstance.py b/ipaserver/install/adtrustinstance.py index 7ccd302..9598849 100644 --- a/ipaserver/install/adtrustinstance.py +++ b/ipaserver/install/adtrustinstance.py @@ -38,7 +38,6 @@ from ipaserver.install.replication import wait_for_task from ipalib import errors, api from ipalib.util import normalize_zone from ipapython.dn import DN -from ipapython import sysrestore from ipapython import ipautil from ipapython.ipa_log_manager import root_logger import ipapython.errors @@ -135,14 +134,9 @@ class ADTRUSTInstance(service.Service): self.fqdn = None self.host_netbios_name = None - self.realm = None - service.Service.__init__(self, "smb", service_desc="CIFS") - - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) + super(ADTRUSTInstance, self).__init__( + "smb", service_desc="CIFS", fstore=fstore) self.__setup_default_attributes() diff --git a/ipaserver/install/bindinstance.py b/ipaserver/install/bindinstance.py index 9810246..6843ef8 100644 --- a/ipaserver/install/bindinstance.py +++ b/ipaserver/install/bindinstance.py @@ -39,7 +39,7 @@ from ipaserver.dns_data_management import ( from ipaserver.install import installutils from ipaserver.install import service from ipaserver.install import sysupgrade -from ipapython import sysrestore, ipautil, ipaldap +from ipapython import ipautil, ipaldap from ipapython import dnsutil from ipapython.dnsutil import DNSName from ipapython.ipa_log_manager import root_logger @@ -615,27 +615,22 @@ class DnsBackup(object): class BindInstance(service.Service): def __init__(self, fstore=None, api=api): - service.Service.__init__( - self, "named", - service_desc="DNS" + super(BindInstance, self).__init__( + "named", + service_desc="DNS", + fstore=fstore, + api=api ) self.dns_backup = DnsBackup(self) self.named_user = None self.domain = None self.host = None self.ip_addresses = [] - self.realm = None self.forwarders = None self.sub_dict = None self.reverse_zones = [] - self.api = api self.named_regular = services.service('named-regular') - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) - suffix = ipautil.dn_attribute_property('_suffix') def setup(self, fqdn, ip_addresses, realm_name, domain_name, forwarders, diff --git a/ipaserver/install/dnskeysyncinstance.py b/ipaserver/install/dnskeysyncinstance.py index bc2477b..bcbeeec 100644 --- a/ipaserver/install/dnskeysyncinstance.py +++ b/ipaserver/install/dnskeysyncinstance.py @@ -20,7 +20,7 @@ from ipaserver.install import installutils from ipapython.ipa_log_manager import root_logger from ipapython.dn import DN from ipapython import ipaldap -from ipapython import sysrestore, ipautil +from ipapython import ipautil from ipaplatform.constants import constants from ipaplatform.paths import paths from ipalib import errors, api @@ -61,9 +61,10 @@ def remove_replica_public_keys(hostname): class DNSKeySyncInstance(service.Service): def __init__(self, fstore=None, logger=root_logger): - service.Service.__init__( - self, "ipa-dnskeysyncd", + super(DNSKeySyncInstance, self).__init__( + "ipa-dnskeysyncd", service_desc="DNS key synchronization service", + fstore=fstore ) self.logger = logger self.extra_config = [u'dnssecVersion 1', ] # DNSSEC enabled @@ -71,10 +72,6 @@ class DNSKeySyncInstance(service.Service): self.named_gid = None self.ods_uid = None self.ods_gid = None - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) suffix = ipautil.dn_attribute_property('_suffix') diff --git a/ipaserver/install/dogtaginstance.py b/ipaserver/install/dogtaginstance.py index cbe3e43..38e726e 100644 --- a/ipaserver/install/dogtaginstance.py +++ b/ipaserver/install/dogtaginstance.py @@ -113,10 +113,10 @@ class DogtagInstance(service.Service): super(DogtagInstance, self).__init__( 'pki-tomcatd', - service_desc=service_desc + service_desc=service_desc, + realm_name=realm ) - self.realm = realm self.admin_password = None self.fqdn = host_name self.pkcs12_info = None diff --git a/ipaserver/install/dsinstance.py b/ipaserver/install/dsinstance.py index 7d283d0..1a38efa 100644 --- a/ipaserver/install/dsinstance.py +++ b/ipaserver/install/dsinstance.py @@ -32,7 +32,7 @@ import fnmatch import ldap from ipapython.ipa_log_manager import root_logger -from ipapython import ipautil, sysrestore, ipaldap +from ipapython import ipautil, ipaldap from ipapython import dogtag from ipaserver.install import service from ipaserver.install import installutils @@ -223,10 +223,13 @@ info: IPA V2.0 class DsInstance(service.Service): def __init__(self, realm_name=None, domain_name=None, fstore=None, domainlevel=None, config_ldif=None): - service.Service.__init__(self, "dirsrv", - service_desc="directory server") + super(DsInstance, self).__init__( + "dirsrv", + service_desc="directory server", + fstore=fstore, + realm_name=realm_name + ) self.nickname = 'Server-Cert' - self.realm = realm_name self.sub_dict = None self.domain = domain_name self.serverid = None @@ -248,12 +251,6 @@ class DsInstance(service.Service): else: self.suffix = DN() - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) - - subject_base = ipautil.dn_attribute_property('_subject_base') def __common_setup(self, enable_ssl=False): diff --git a/ipaserver/install/httpinstance.py b/ipaserver/install/httpinstance.py index a166cc9..71cdcdd 100644 --- a/ipaserver/install/httpinstance.py +++ b/ipaserver/install/httpinstance.py @@ -34,7 +34,6 @@ import six from ipaserver.install import service from ipaserver.install import certs from ipaserver.install import installutils -from ipapython import sysrestore from ipapython import certmonger from ipapython import dogtag from ipapython import ipautil @@ -121,11 +120,10 @@ class WebGuiInstance(service.SimpleServiceInstance): class HTTPInstance(service.Service): def __init__(self, fstore=None, cert_nickname='Server-Cert'): - service.Service.__init__(self, "httpd", service_desc="the web interface") - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) + super(HTTPInstance, self).__init__( + "httpd", + service_desc="the web interface", + fstore=fstore) self.cert_nickname = cert_nickname self.ca_is_configured = True diff --git a/ipaserver/install/krbinstance.py b/ipaserver/install/krbinstance.py index 22ebba7..d1fba7c 100644 --- a/ipaserver/install/krbinstance.py +++ b/ipaserver/install/krbinstance.py @@ -28,7 +28,6 @@ import dns.name from ipaserver.install import service from ipaserver.install import installutils -from ipapython import sysrestore from ipapython import ipautil from ipapython import kernel_keyring from ipalib.constants import CACERT @@ -50,7 +49,11 @@ class KpasswdInstance(service.SimpleServiceInstance): class KrbInstance(service.Service): def __init__(self, fstore=None): - service.Service.__init__(self, "krb5kdc", service_desc="Kerberos KDC") + super(KrbInstance, self).__init__( + "krb5kdc", + service_desc="Kerberos KDC", + fstore=fstore + ) self.fqdn = None self.realm = None self.domain = None @@ -63,11 +66,6 @@ class KrbInstance(service.Service): self.sub_dict = None self.pkcs12_info = None - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) - suffix = ipautil.dn_attribute_property('_suffix') subject_base = ipautil.dn_attribute_property('_subject_base') diff --git a/ipaserver/install/ntpinstance.py b/ipaserver/install/ntpinstance.py index 31c5068..716eb08 100644 --- a/ipaserver/install/ntpinstance.py +++ b/ipaserver/install/ntpinstance.py @@ -20,7 +20,6 @@ from ipaserver.install import service from ipaserver.install import sysupgrade -from ipapython import sysrestore from ipapython import ipautil from ipaplatform.constants import constants from ipaplatform.paths import paths @@ -49,13 +48,12 @@ def ntp_ldap_enable(fqdn, base_dn, realm): class NTPInstance(service.Service): def __init__(self, realm=None, fstore=None): - service.Service.__init__(self, "ntpd", service_desc="NTP daemon") - self.realm = realm - - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) + super(NTPInstance, self).__init__( + "ntpd", + service_desc="NTP daemon", + realm_name=realm, + fstore=fstore + ) def __write_config(self): diff --git a/ipaserver/install/odsexporterinstance.py b/ipaserver/install/odsexporterinstance.py index f0d9034..a53ebe6 100644 --- a/ipaserver/install/odsexporterinstance.py +++ b/ipaserver/install/odsexporterinstance.py @@ -12,7 +12,7 @@ from ipaserver.install import service from ipaserver.install import installutils from ipapython.ipa_log_manager import root_logger from ipapython.dn import DN -from ipapython import sysrestore, ipautil +from ipapython import ipautil from ipaplatform.constants import constants from ipaplatform.paths import paths from ipaplatform import services @@ -21,19 +21,15 @@ from ipalib import errors, api class ODSExporterInstance(service.Service): def __init__(self, fstore=None): - service.Service.__init__( - self, "ipa-ods-exporter", - service_desc="IPA OpenDNSSEC exporter daemon" + super(ODSExporterInstance, self).__init__( + "ipa-ods-exporter", + service_desc="IPA OpenDNSSEC exporter daemon", + fstore=fstore ) self.ods_uid = None self.ods_gid = None self.enable_if_exists = False - if fstore: - self.fstore = fstore - else: - self.fstore = sysrestore.FileStore(paths.SYSRESTORE) - suffix = ipautil.dn_attribute_property('_suffix') def create_instance(self, fqdn, realm_name): diff --git a/ipaserver/install/service.py b/ipaserver/install/service.py index c2b8e00..909b8e4 100644 --- a/ipaserver/install/service.py +++ b/ipaserver/install/service.py @@ -130,7 +130,8 @@ def find_providing_server(svcname, conn, host_name=None, api=api): class Service(object): - def __init__(self, service_name, service_desc=None, sstore=None): + def __init__(self, service_name, service_desc=None, sstore=None, + fstore=None, api=api, realm_name=None): self.service_name = service_name self.service_desc = service_desc self.service = services.service(service_name) @@ -144,10 +145,16 @@ class Service(object): else: self.sstore = sysrestore.StateFile(paths.SYSRESTORE) - self.realm = None + if fstore: + self.fstore = fstore + else: + self.fstore = sysrestore.FileStore(paths.SYSRESTORE) + + self.realm = realm_name self.suffix = DN() self.principal = None self.dercert = None + self.api = api @property def admin_conn(self): diff --git a/ipaserver/install/upgradeinstance.py b/ipaserver/install/upgradeinstance.py index 0a24c0c..0d6013f 100644 --- a/ipaserver/install/upgradeinstance.py +++ b/ipaserver/install/upgradeinstance.py @@ -81,7 +81,7 @@ class IPAUpgrade(service.Service): for _i in range(8): h = "%02x" % rand.randint(0,255) ext += h - service.Service.__init__(self, "dirsrv") + super(IPAUpgrade, self).__init__("dirsrv", realm_name=realm_name) serverid = installutils.realm_to_serverid(realm_name) self.filename = '%s/%s' % (paths.ETC_DIRSRV_SLAPD_INSTANCE_TEMPLATE % serverid, DSE) self.savefilename = '%s/%s.ipa.%s' % (paths.ETC_DIRSRV_SLAPD_INSTANCE_TEMPLATE % serverid, DSE, ext) @@ -89,7 +89,6 @@ class IPAUpgrade(service.Service): self.modified = False self.serverid = serverid self.schema_files = schema_files - self.realm = realm_name def __start(self): services.service(self.service_name).start(self.serverid, ldapi=True)