summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2008-05-05 14:36:36 -0400
committerMichael DeHaan <mdehaan@redhat.com>2008-05-05 14:36:36 -0400
commit3b447a659ddd9c8ee97ece470c876dd36aa32914 (patch)
tree12677b98e2418047c8025caf18021932e42c3b2b
parent17e2579f3bd7c14dab0e14ed2a808fe9546f556d (diff)
downloadthird_party-cobbler-3b447a659ddd9c8ee97ece470c876dd36aa32914.zip
third_party-cobbler-3b447a659ddd9c8ee97ece470c876dd36aa32914.tar.gz
third_party-cobbler-3b447a659ddd9c8ee97ece470c876dd36aa32914.tar.xz
Apply jeckersb's patch to allow per-zone templates
-rw-r--r--cobbler/modules/manage_bind.py29
-rw-r--r--cobbler/webui/master.py7
-rw-r--r--docs/cobbler.pod2
-rw-r--r--setup.py4
4 files changed, 31 insertions, 11 deletions
diff --git a/cobbler/modules/manage_bind.py b/cobbler/modules/manage_bind.py
index 900a832..e14122a 100644
--- a/cobbler/modules/manage_bind.py
+++ b/cobbler/modules/manage_bind.py
@@ -184,21 +184,20 @@ zone "%(arpa)s." {
def __write_zone_files(self):
"""
- Write out the forward and reverse zone files for all the zones
- defined in manage_forward_zones and manage_reverse_zones
+ Write out the forward and reverse zone files for all configured zones
"""
- template_file = "/etc/cobbler/zone.template"
+ default_template_file = "/etc/cobbler/zone.template"
cobbler_server = self.settings.server
serial = int(time.time())
forward = self.__config_forward_zones()
reverse = self.__config_reverse_zones()
try:
- f2 = open(template_file,"r")
+ f2 = open(default_template_file,"r")
except:
- raise CX(_("error reading template from file: %s") % template_file)
- template_data = ""
- template_data = f2.read()
+ raise CX(_("error reading template from file: %s") % default_template_file)
+ default_template_data = ""
+ default_template_data = f2.read()
f2.close()
for (zone, hosts) in forward.iteritems():
@@ -208,6 +207,14 @@ zone "%(arpa)s." {
'host_record': ''
}
+ # grab zone-specific template if it exists
+ try:
+ fd = open('/etc/cobbler/zone_templates/%s' % zone)
+ template_data = fd.read()
+ fd.close()
+ except:
+ template_data = default_template_data
+
for host in hosts:
txt = '%s\tIN\tA\t%s\n' % host
metadata['host_record'] = metadata['host_record'] + txt
@@ -221,6 +228,14 @@ zone "%(arpa)s." {
'host_record': ''
}
+ # grab zone-specific template if it exists
+ try:
+ fd = open('/etc/cobbler/zone_templates/%s' % zone)
+ template_data = fd.read()
+ fd.close()
+ except:
+ template_data = default_template_data
+
for host in hosts:
txt = '%s\tIN\tPTR\t%s\n' % host
metadata['host_record'] = metadata['host_record'] + txt
diff --git a/cobbler/webui/master.py b/cobbler/webui/master.py
index 7e54a2d..cdde14d 100644
--- a/cobbler/webui/master.py
+++ b/cobbler/webui/master.py
@@ -33,9 +33,10 @@ VFN=valueForName
currentTime=time.time
__CHEETAH_version__ = '2.0.1'
__CHEETAH_versionTuple__ = (2, 0, 1, 'final', 0)
-__CHEETAH_genTime__ = 1209057202.737108
-__CHEETAH_genTimestamp__ = 'Thu Apr 24 13:13:22 2008'
-__CHEETAH_srcLastModified__ = 'Thu Apr 24 12:59:37 2008'
+__CHEETAH_genTime__ = 1209998447.8930521
+__CHEETAH_genTimestamp__ = 'Mon May 5 10:40:47 2008'
+__CHEETAH_src__ = 'webui_templates/master.tmpl'
+__CHEETAH_srcLastModified__ = 'Thu May 1 13:51:29 2008'
__CHEETAH_docstring__ = 'Autogenerated by CHEETAH: The Python-Powered Template Engine'
if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
diff --git a/docs/cobbler.pod b/docs/cobbler.pod
index 311a94c..018c3f4 100644
--- a/docs/cobbler.pod
+++ b/docs/cobbler.pod
@@ -563,7 +563,7 @@ Choose either "management = isc_and_bind" or "management = dnsmasq" in /etc/cobb
This feature is off by default. If using BIND, you may restrict the scope of zones managed with the options 'manage_forward_zones' and 'manage_reverse_zones'. (See the Wiki for more information on this).
-If using BIND, Cobbler will use /etc/cobbler/bind.template and /etc/cobbler/zone.template as a starting point for the named.conf and individual zone files, respectively. These files must be user edited for the user's particular networking environment. Read the file and understand how BIND works before proceeding.
+If using BIND, Cobbler will use /etc/cobbler/bind.template and /etc/cobbler/zone.template as a starting point for the named.conf and individual zone files, respectively. You may drop zone-specific template files in /etc/cobbler/zone_templates/name-of-zone which will override the default. These files must be user edited for the user's particular networking environment. Read the file and understand how BIND works before proceeding.
If using dnsmasq, the template is /etc/cobbler/dnsmasq.template. Read this file and understand how dnsmasq works before proceeding.
diff --git a/setup.py b/setup.py
index 442da5b..07d9880 100644
--- a/setup.py
+++ b/setup.py
@@ -41,6 +41,7 @@ if __name__ == "__main__":
vw_systems = "/var/www/cobbler/systems"
vw_profiles = "/var/www/cobbler/profiles"
vw_links = "/var/www/cobbler/links"
+ zone_templates = "/etc/cobbler/zone_templates"
tftp_cfg = "/tftpboot/pxelinux.cfg"
tftp_images = "/tftpboot/images"
rotpath = "/etc/logrotate.d"
@@ -134,6 +135,9 @@ if __name__ == "__main__":
(vw_profiles, []),
(vw_links, []),
+ # zone-specific templates directory
+ (zone_templates, []),
+
# tftp directories that we own
(tftp_cfg, []),
(tftp_images, []),