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 <slaznick@redhat.com>
This commit is contained in:
Martin Babinsky 2016-11-03 16:38:06 +01:00 committed by Jan Cholasta
parent 1e6366bc9f
commit 15f282cf2c
11 changed files with 51 additions and 72 deletions

View File

@ -38,7 +38,6 @@ from ipaserver.install.replication import wait_for_task
from ipalib import errors, api from ipalib import errors, api
from ipalib.util import normalize_zone from ipalib.util import normalize_zone
from ipapython.dn import DN from ipapython.dn import DN
from ipapython import sysrestore
from ipapython import ipautil from ipapython import ipautil
from ipapython.ipa_log_manager import root_logger from ipapython.ipa_log_manager import root_logger
import ipapython.errors import ipapython.errors
@ -135,14 +134,9 @@ class ADTRUSTInstance(service.Service):
self.fqdn = None self.fqdn = None
self.host_netbios_name = None self.host_netbios_name = None
self.realm = None
service.Service.__init__(self, "smb", service_desc="CIFS") super(ADTRUSTInstance, self).__init__(
"smb", service_desc="CIFS", fstore=fstore)
if fstore:
self.fstore = fstore
else:
self.fstore = sysrestore.FileStore(paths.SYSRESTORE)
self.__setup_default_attributes() self.__setup_default_attributes()

View File

@ -39,7 +39,7 @@ from ipaserver.dns_data_management import (
from ipaserver.install import installutils from ipaserver.install import installutils
from ipaserver.install import service from ipaserver.install import service
from ipaserver.install import sysupgrade from ipaserver.install import sysupgrade
from ipapython import sysrestore, ipautil, ipaldap from ipapython import ipautil, ipaldap
from ipapython import dnsutil from ipapython import dnsutil
from ipapython.dnsutil import DNSName from ipapython.dnsutil import DNSName
from ipapython.ipa_log_manager import root_logger from ipapython.ipa_log_manager import root_logger
@ -615,27 +615,22 @@ class DnsBackup(object):
class BindInstance(service.Service): class BindInstance(service.Service):
def __init__(self, fstore=None, api=api): def __init__(self, fstore=None, api=api):
service.Service.__init__( super(BindInstance, self).__init__(
self, "named", "named",
service_desc="DNS" service_desc="DNS",
fstore=fstore,
api=api
) )
self.dns_backup = DnsBackup(self) self.dns_backup = DnsBackup(self)
self.named_user = None self.named_user = None
self.domain = None self.domain = None
self.host = None self.host = None
self.ip_addresses = [] self.ip_addresses = []
self.realm = None
self.forwarders = None self.forwarders = None
self.sub_dict = None self.sub_dict = None
self.reverse_zones = [] self.reverse_zones = []
self.api = api
self.named_regular = services.service('named-regular') 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') suffix = ipautil.dn_attribute_property('_suffix')
def setup(self, fqdn, ip_addresses, realm_name, domain_name, forwarders, def setup(self, fqdn, ip_addresses, realm_name, domain_name, forwarders,

View File

@ -20,7 +20,7 @@ from ipaserver.install import installutils
from ipapython.ipa_log_manager import root_logger from ipapython.ipa_log_manager import root_logger
from ipapython.dn import DN from ipapython.dn import DN
from ipapython import ipaldap from ipapython import ipaldap
from ipapython import sysrestore, ipautil from ipapython import ipautil
from ipaplatform.constants import constants from ipaplatform.constants import constants
from ipaplatform.paths import paths from ipaplatform.paths import paths
from ipalib import errors, api from ipalib import errors, api
@ -61,9 +61,10 @@ def remove_replica_public_keys(hostname):
class DNSKeySyncInstance(service.Service): class DNSKeySyncInstance(service.Service):
def __init__(self, fstore=None, logger=root_logger): def __init__(self, fstore=None, logger=root_logger):
service.Service.__init__( super(DNSKeySyncInstance, self).__init__(
self, "ipa-dnskeysyncd", "ipa-dnskeysyncd",
service_desc="DNS key synchronization service", service_desc="DNS key synchronization service",
fstore=fstore
) )
self.logger = logger self.logger = logger
self.extra_config = [u'dnssecVersion 1', ] # DNSSEC enabled self.extra_config = [u'dnssecVersion 1', ] # DNSSEC enabled
@ -71,10 +72,6 @@ class DNSKeySyncInstance(service.Service):
self.named_gid = None self.named_gid = None
self.ods_uid = None self.ods_uid = None
self.ods_gid = None self.ods_gid = None
if fstore:
self.fstore = fstore
else:
self.fstore = sysrestore.FileStore(paths.SYSRESTORE)
suffix = ipautil.dn_attribute_property('_suffix') suffix = ipautil.dn_attribute_property('_suffix')

View File

@ -113,10 +113,10 @@ class DogtagInstance(service.Service):
super(DogtagInstance, self).__init__( super(DogtagInstance, self).__init__(
'pki-tomcatd', 'pki-tomcatd',
service_desc=service_desc service_desc=service_desc,
realm_name=realm
) )
self.realm = realm
self.admin_password = None self.admin_password = None
self.fqdn = host_name self.fqdn = host_name
self.pkcs12_info = None self.pkcs12_info = None

View File

@ -32,7 +32,7 @@ import fnmatch
import ldap import ldap
from ipapython.ipa_log_manager import root_logger from ipapython.ipa_log_manager import root_logger
from ipapython import ipautil, sysrestore, ipaldap from ipapython import ipautil, ipaldap
from ipapython import dogtag from ipapython import dogtag
from ipaserver.install import service from ipaserver.install import service
from ipaserver.install import installutils from ipaserver.install import installutils
@ -223,10 +223,13 @@ info: IPA V2.0
class DsInstance(service.Service): class DsInstance(service.Service):
def __init__(self, realm_name=None, domain_name=None, fstore=None, def __init__(self, realm_name=None, domain_name=None, fstore=None,
domainlevel=None, config_ldif=None): domainlevel=None, config_ldif=None):
service.Service.__init__(self, "dirsrv", super(DsInstance, self).__init__(
service_desc="directory server") "dirsrv",
service_desc="directory server",
fstore=fstore,
realm_name=realm_name
)
self.nickname = 'Server-Cert' self.nickname = 'Server-Cert'
self.realm = realm_name
self.sub_dict = None self.sub_dict = None
self.domain = domain_name self.domain = domain_name
self.serverid = None self.serverid = None
@ -248,12 +251,6 @@ class DsInstance(service.Service):
else: else:
self.suffix = DN() self.suffix = DN()
if fstore:
self.fstore = fstore
else:
self.fstore = sysrestore.FileStore(paths.SYSRESTORE)
subject_base = ipautil.dn_attribute_property('_subject_base') subject_base = ipautil.dn_attribute_property('_subject_base')
def __common_setup(self, enable_ssl=False): def __common_setup(self, enable_ssl=False):

View File

@ -34,7 +34,6 @@ import six
from ipaserver.install import service from ipaserver.install import service
from ipaserver.install import certs from ipaserver.install import certs
from ipaserver.install import installutils from ipaserver.install import installutils
from ipapython import sysrestore
from ipapython import certmonger from ipapython import certmonger
from ipapython import dogtag from ipapython import dogtag
from ipapython import ipautil from ipapython import ipautil
@ -121,11 +120,10 @@ class WebGuiInstance(service.SimpleServiceInstance):
class HTTPInstance(service.Service): class HTTPInstance(service.Service):
def __init__(self, fstore=None, cert_nickname='Server-Cert'): def __init__(self, fstore=None, cert_nickname='Server-Cert'):
service.Service.__init__(self, "httpd", service_desc="the web interface") super(HTTPInstance, self).__init__(
if fstore: "httpd",
self.fstore = fstore service_desc="the web interface",
else: fstore=fstore)
self.fstore = sysrestore.FileStore(paths.SYSRESTORE)
self.cert_nickname = cert_nickname self.cert_nickname = cert_nickname
self.ca_is_configured = True self.ca_is_configured = True

View File

@ -28,7 +28,6 @@ import dns.name
from ipaserver.install import service from ipaserver.install import service
from ipaserver.install import installutils from ipaserver.install import installutils
from ipapython import sysrestore
from ipapython import ipautil from ipapython import ipautil
from ipapython import kernel_keyring from ipapython import kernel_keyring
from ipalib.constants import CACERT from ipalib.constants import CACERT
@ -50,7 +49,11 @@ class KpasswdInstance(service.SimpleServiceInstance):
class KrbInstance(service.Service): class KrbInstance(service.Service):
def __init__(self, fstore=None): 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.fqdn = None
self.realm = None self.realm = None
self.domain = None self.domain = None
@ -63,11 +66,6 @@ class KrbInstance(service.Service):
self.sub_dict = None self.sub_dict = None
self.pkcs12_info = None self.pkcs12_info = None
if fstore:
self.fstore = fstore
else:
self.fstore = sysrestore.FileStore(paths.SYSRESTORE)
suffix = ipautil.dn_attribute_property('_suffix') suffix = ipautil.dn_attribute_property('_suffix')
subject_base = ipautil.dn_attribute_property('_subject_base') subject_base = ipautil.dn_attribute_property('_subject_base')

View File

@ -20,7 +20,6 @@
from ipaserver.install import service from ipaserver.install import service
from ipaserver.install import sysupgrade from ipaserver.install import sysupgrade
from ipapython import sysrestore
from ipapython import ipautil from ipapython import ipautil
from ipaplatform.constants import constants from ipaplatform.constants import constants
from ipaplatform.paths import paths from ipaplatform.paths import paths
@ -49,13 +48,12 @@ def ntp_ldap_enable(fqdn, base_dn, realm):
class NTPInstance(service.Service): class NTPInstance(service.Service):
def __init__(self, realm=None, fstore=None): def __init__(self, realm=None, fstore=None):
service.Service.__init__(self, "ntpd", service_desc="NTP daemon") super(NTPInstance, self).__init__(
self.realm = realm "ntpd",
service_desc="NTP daemon",
if fstore: realm_name=realm,
self.fstore = fstore fstore=fstore
else: )
self.fstore = sysrestore.FileStore(paths.SYSRESTORE)
def __write_config(self): def __write_config(self):

View File

@ -12,7 +12,7 @@ from ipaserver.install import service
from ipaserver.install import installutils from ipaserver.install import installutils
from ipapython.ipa_log_manager import root_logger from ipapython.ipa_log_manager import root_logger
from ipapython.dn import DN from ipapython.dn import DN
from ipapython import sysrestore, ipautil from ipapython import ipautil
from ipaplatform.constants import constants from ipaplatform.constants import constants
from ipaplatform.paths import paths from ipaplatform.paths import paths
from ipaplatform import services from ipaplatform import services
@ -21,19 +21,15 @@ from ipalib import errors, api
class ODSExporterInstance(service.Service): class ODSExporterInstance(service.Service):
def __init__(self, fstore=None): def __init__(self, fstore=None):
service.Service.__init__( super(ODSExporterInstance, self).__init__(
self, "ipa-ods-exporter", "ipa-ods-exporter",
service_desc="IPA OpenDNSSEC exporter daemon" service_desc="IPA OpenDNSSEC exporter daemon",
fstore=fstore
) )
self.ods_uid = None self.ods_uid = None
self.ods_gid = None self.ods_gid = None
self.enable_if_exists = False self.enable_if_exists = False
if fstore:
self.fstore = fstore
else:
self.fstore = sysrestore.FileStore(paths.SYSRESTORE)
suffix = ipautil.dn_attribute_property('_suffix') suffix = ipautil.dn_attribute_property('_suffix')
def create_instance(self, fqdn, realm_name): def create_instance(self, fqdn, realm_name):

View File

@ -130,7 +130,8 @@ def find_providing_server(svcname, conn, host_name=None, api=api):
class Service(object): 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_name = service_name
self.service_desc = service_desc self.service_desc = service_desc
self.service = services.service(service_name) self.service = services.service(service_name)
@ -144,10 +145,16 @@ class Service(object):
else: else:
self.sstore = sysrestore.StateFile(paths.SYSRESTORE) 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.suffix = DN()
self.principal = None self.principal = None
self.dercert = None self.dercert = None
self.api = api
@property @property
def admin_conn(self): def admin_conn(self):

View File

@ -81,7 +81,7 @@ class IPAUpgrade(service.Service):
for _i in range(8): for _i in range(8):
h = "%02x" % rand.randint(0,255) h = "%02x" % rand.randint(0,255)
ext += h ext += h
service.Service.__init__(self, "dirsrv") super(IPAUpgrade, self).__init__("dirsrv", realm_name=realm_name)
serverid = installutils.realm_to_serverid(realm_name) serverid = installutils.realm_to_serverid(realm_name)
self.filename = '%s/%s' % (paths.ETC_DIRSRV_SLAPD_INSTANCE_TEMPLATE % serverid, DSE) 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) 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.modified = False
self.serverid = serverid self.serverid = serverid
self.schema_files = schema_files self.schema_files = schema_files
self.realm = realm_name
def __start(self): def __start(self):
services.service(self.service_name).start(self.serverid, ldapi=True) services.service(self.service_name).start(self.serverid, ldapi=True)