From 15f282cf2c4a5315aa3e259bd923718685d88245 Mon Sep 17 00:00:00 2001 From: Martin Babinsky Date: Thu, 3 Nov 2016 16:38:06 +0100 Subject: [PATCH] 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 --- ipaserver/install/adtrustinstance.py | 10 ++-------- ipaserver/install/bindinstance.py | 17 ++++++----------- ipaserver/install/dnskeysyncinstance.py | 11 ++++------- ipaserver/install/dogtaginstance.py | 4 ++-- ipaserver/install/dsinstance.py | 17 +++++++---------- ipaserver/install/httpinstance.py | 10 ++++------ ipaserver/install/krbinstance.py | 12 +++++------- ipaserver/install/ntpinstance.py | 14 ++++++-------- ipaserver/install/odsexporterinstance.py | 14 +++++--------- ipaserver/install/service.py | 11 +++++++++-- ipaserver/install/upgradeinstance.py | 3 +-- 11 files changed, 51 insertions(+), 72 deletions(-) diff --git a/ipaserver/install/adtrustinstance.py b/ipaserver/install/adtrustinstance.py index 7ccd3026a..95988498c 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 98102463c..6843ef865 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 bc2477b7a..bcbeeec44 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 cbe3e438a..38e726e0b 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 7d283d0d8..1a38efa9d 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 a166cc91a..71cdcdd05 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 22ebba7c0..d1fba7cf0 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 31c5068fb..716eb0809 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 f0d903471..a53ebe667 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 c2b8e0012..909b8e470 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 0a24c0cbe..0d6013fd3 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)