Make check_inst() a standalone function in bindinstance.

When an install instance is created that contains a pointer to a sysrestore
point it loads in the current configuration when instantiated. If an
instance is instantiated but not used then changes may occur to the
system state that it is unaware of. So one needs to take care in the order
that things are done to avoid losing information.

When bind was setup it was overwriting all data in sysrestore.state and
leaving just a [named] section. This caused problems at uninstall.

448173
This commit is contained in:
Rob Crittenden 2008-05-28 22:46:08 -04:00
parent e3ba80e3d3
commit 165d26ce2b
2 changed files with 10 additions and 10 deletions

View File

@ -365,9 +365,8 @@ def main():
admin_password = ""
# check bind packages are installed
bind = ipaserver.bindinstance.BindInstance()
if options.setup_bind:
if not bind.check_inst():
if not ipaserver.bindinstance.check_inst():
print "--setup-bind was specified but bind is not installed on the system"
print "Please install bind and restart the setup program"
return 1
@ -502,6 +501,7 @@ def main():
webgui = ipaserver.httpinstance.WebGuiInstance()
webgui.create_instance()
bind = ipaserver.bindinstance.BindInstance(fstore)
bind.setup(host_name, ip_address, realm_name, domain_name)
if options.setup_bind:
bind.create_instance()

View File

@ -28,6 +28,14 @@ import service
from ipa import sysrestore
from ipa import ipautil
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 True
class BindInstance(service.Service):
def __init__(self, fstore=None):
service.Service.__init__(self, "named")
@ -52,14 +60,6 @@ class BindInstance(service.Service):
self.__setup_sub_dict()
def check_inst(self):
# 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 True
def create_sample_bind_zone(self):
bind_txt = ipautil.template_file(ipautil.SHARE_DIR + "bind.zone.db.template", self.sub_dict)
[bind_fd, bind_name] = tempfile.mkstemp(".db","sample.zone.")