From 1bc786e379ed5575cf4dffaa23bf7d66f42e44d7 Mon Sep 17 00:00:00 2001 From: Martin Nagy Date: Tue, 12 May 2009 15:20:24 +0200 Subject: Use LDAP instead of flat file for zone storage --- ipaserver/install/bindinstance.py | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'ipaserver/install/bindinstance.py') diff --git a/ipaserver/install/bindinstance.py b/ipaserver/install/bindinstance.py index 08b781d2..72d1102b 100644 --- a/ipaserver/install/bindinstance.py +++ b/ipaserver/install/bindinstance.py @@ -27,20 +27,26 @@ import logging import service from ipapython import sysrestore from ipapython import ipautil +from ipalib import util def check_inst(): # So far this file is always present in both RHEL5 and Fedora if all the necessary # bind packages are installed (RHEL5 requires also the pkg: caching-nameserver) if not os.path.exists('/etc/named.rfc1912.zones'): - return False + return False + + # Also check for the LDAP BIND plug-in + if not os.path.exists('/usr/lib/bind/ldap.so') and \ + not os.path.exists('/usr/lib64/bind/ldap.so'): + return False return True class BindInstance(service.Service): - def __init__(self, fstore=None): - service.Service.__init__(self, "named") + def __init__(self, fstore=None, dm_password=None): + service.Service.__init__(self, "named", dm_password=dm_password) self.fqdn = None - self.domain = None + self.domain = None self.host = None self.ip_address = None self.realm = None @@ -57,6 +63,7 @@ class BindInstance(service.Service): self.realm = realm_name self.domain = domain_name self.host = fqdn.split(".")[0] + self.suffix = util.realm_to_suffix(self.realm) self.__setup_sub_dict() @@ -99,15 +106,12 @@ class BindInstance(service.Service): IP=self.ip_address, DOMAIN=self.domain, HOST=self.host, - REALM=self.realm) + REALM=self.realm, + SUFFIX=self.suffix) def __setup_zone(self): self.backup_state("domain", self.domain) - zone_txt = ipautil.template_file(ipautil.SHARE_DIR + "bind.zone.db.template", self.sub_dict) - self.fstore.backup_file('/var/named/'+self.domain+'.zone.db') - zone_fd = open('/var/named/'+self.domain+'.zone.db', 'w') - zone_fd.write(zone_txt) - zone_fd.close() + self._ldap_mod("dns.ldif", self.sub_dict) def __setup_named_conf(self): self.fstore.backup_file('/etc/named.conf') @@ -135,13 +139,6 @@ class BindInstance(service.Service): if not running is None: self.stop() - if not domain is None: - try: - self.fstore.restore_file(os.path.join ("/var/named/", domain + ".zone.db")) - except ValueError, error: - logging.debug(error) - pass - for f in ["/etc/named.conf", "/etc/resolv.conf"]: try: self.fstore.restore_file(f) -- cgit