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.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()

View File

@ -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,

View File

@ -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')

View File

@ -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

View File

@ -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):

View File

@ -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

View File

@ -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')

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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)