summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cobbler/item_profile.py10
-rw-r--r--cobbler/item_system.py10
-rw-r--r--cobbler/modules/cli_profile.py3
-rw-r--r--cobbler/modules/cli_system.py3
-rw-r--r--cobbler/remote.py2
-rw-r--r--cobbler/settings.py1
-rw-r--r--cobbler/webui/CobblerWeb.py6
-rw-r--r--snippets/post_install_network_config8
-rw-r--r--webui_templates/profile_edit.tmpl23
-rw-r--r--webui_templates/system_edit.tmpl27
10 files changed, 81 insertions, 12 deletions
diff --git a/cobbler/item_profile.py b/cobbler/item_profile.py
index d30eb52a..90cf7829 100644
--- a/cobbler/item_profile.py
+++ b/cobbler/item_profile.py
@@ -69,6 +69,7 @@ class Profile(item.Item):
self.ctime = 0
self.mtime = 0
self.name_servers = (self.settings.default_name_servers, '<<inherit>>')[is_subobject]
+ self.name_servers_search = (self.settings.default_name_servers_search, '<<inherit>>')[is_subobject]
self.redhat_management_key = "<<inherit>>"
def from_datastruct(self,seed_data):
@@ -95,6 +96,7 @@ class Profile(item.Item):
self.ctime = self.load_item(seed_data,'ctime',0)
self.mtime = self.load_item(seed_data,'mtime',0)
self.name_servers = self.load_item(seed_data,'name_servers',[])
+ self.name_servers_search = self.load_item(seed_data,'name_servers_search',[])
self.redhat_management_key = self.load_item(seed_data,'redhat_management_key', '<<inherit>>')
# backwards compatibility
@@ -184,6 +186,11 @@ class Profile(item.Item):
self.name_servers = data
return True
+ def set_name_servers_search(self,data):
+ data = utils.input_string_or_list(data)
+ self.name_servers_search = data
+ return True
+
def set_enable_menu(self,enable_menu):
"""
Sets whether or not the profile will be listed in the default
@@ -304,6 +311,7 @@ class Profile(item.Item):
'ctime' : self.ctime,
'mtime' : self.mtime,
'name_servers' : self.name_servers,
+ 'name_servers_search' : self.name_servers_search,
'uid' : self.uid,
'random_id' : self.random_id,
'redhat_management_key' : self.redhat_management_key
@@ -328,6 +336,7 @@ class Profile(item.Item):
buf = buf + _("mgmt classes : %s\n") % self.mgmt_classes
buf = buf + _("modified : %s\n") % time.ctime(self.mtime)
buf = buf + _("name servers : %s\n") % self.name_servers
+ buf = buf + _("name servers search : %s\n") % self.name_servers_search
buf = buf + _("owners : %s\n") % self.owners
buf = buf + _("post kernel options : %s\n") % self.kernel_options_post
buf = buf + _("redhat mgmt key : %s\n") % self.redhat_management_key
@@ -379,6 +388,7 @@ class Profile(item.Item):
'mgmt_classes' : self.set_mgmt_classes,
'comment' : self.set_comment,
'name_servers' : self.set_name_servers,
+ 'name_servers_search' : self.set_name_servers_search,
'redhat_management_key' : self.set_redhat_management_key
}
diff --git a/cobbler/item_system.py b/cobbler/item_system.py
index 91a7f62b..355cb6ca 100644
--- a/cobbler/item_system.py
+++ b/cobbler/item_system.py
@@ -74,6 +74,7 @@ class System(item.Item):
self.hostname = ""
self.gateway = ""
self.name_servers = ""
+ self.name_servers_search = ""
self.bonding = ""
self.bonding_master = ""
self.bonding_opts = ""
@@ -175,6 +176,7 @@ class System(item.Item):
self.hostname = self.load_item(seed_data, 'hostname', __hostname)
self.name_servers = self.load_item(seed_data, 'name_servers', '<<inherit>>')
+ self.name_servers_search = self.load_item(seed_data, 'name_servers_search', '<<inherit>>')
self.redhat_management_key = self.load_item(seed_data, 'redhat_management_key', '<<inherit>>')
# virt specific
@@ -448,6 +450,11 @@ class System(item.Item):
self.name_servers = data
return True
+ def set_name_servers_search(self,data):
+ data = utils.input_string_or_list(data)
+ self.name_servers_search = data
+ return True
+
def set_subnet(self,subnet,interface):
intf = self.__get_interface(interface)
intf["subnet"] = subnet
@@ -662,6 +669,7 @@ class System(item.Item):
'hostname' : self.hostname,
'gateway' : self.gateway,
'name_servers' : self.name_servers,
+ 'name_servers_search' : self.name_servers_search,
'redhat_management_key' : self.redhat_management_key
}
@@ -681,6 +689,7 @@ class System(item.Item):
buf = buf + _("modified : %s\n") % time.ctime(self.mtime)
buf = buf + _("name servers : %s\n") % self.name_servers
+ buf = buf + _("name servers search : %s\n") % self.name_servers_search
buf = buf + _("netboot enabled? : %s\n") % self.netboot_enabled
buf = buf + _("owners : %s\n") % self.owners
buf = buf + _("server : %s\n") % self.server
@@ -787,6 +796,7 @@ class System(item.Item):
'hostname' : self.set_hostname,
'gateway' : self.set_gateway,
'name_servers' : self.set_name_servers,
+ 'name_servers_search' : self.set_name_servers_search,
'redhat_management_key' : self.set_redhat_management_key
}
diff --git a/cobbler/modules/cli_profile.py b/cobbler/modules/cli_profile.py
index 03efb7bf..a0666807 100644
--- a/cobbler/modules/cli_profile.py
+++ b/cobbler/modules/cli_profile.py
@@ -72,6 +72,7 @@ class ProfileFunction(commands.CobblerFunction):
if not self.matches_args(args,["dumpvars","remove","report","getks","list"]):
p.add_option("--name-servers", dest="name_servers", help="name servers for static setups")
+ p.add_option("--name-servers-search", dest="name_servers_search", help="name servers search path for static setups")
if "copy" in args or "rename" in args:
p.add_option("--newname", dest="newname")
@@ -158,6 +159,8 @@ class ProfileFunction(commands.CobblerFunction):
obj.set_template_files(self.options.template_files,self.options.inplace)
if self.options.name_servers is not None:
obj.set_name_servers(self.options.name_servers)
+ if self.options.name_servers_search is not None:
+ obj.set_name_servers_search(self.options.name_servers_search)
if self.options.redhat_management_key is not None:
obj.set_redhat_management_key(self.options.redhat_management_key)
diff --git a/cobbler/modules/cli_system.py b/cobbler/modules/cli_system.py
index 0c6499d7..b69e3622 100644
--- a/cobbler/modules/cli_system.py
+++ b/cobbler/modules/cli_system.py
@@ -73,6 +73,7 @@ class SystemFunction(commands.CobblerFunction):
p.add_option("--mac", dest="mac", help="ex: 'AA:BB:CC:DD:EE:FF', (RECOMMENDED)")
p.add_option("--mgmt-classes", dest="mgmt_classes", help="list of config management classes (for Puppet, etc)")
p.add_option("--name-servers", dest="name_servers", help="name servers for static setups")
+ p.add_option("--name-servers-search", dest="name_servers_search", help="name servers search path for static setups")
p.add_option("--redhat-management-key", dest="redhat_management_key", help="authentication token for RHN/Spacewalk/Satellite")
p.add_option("--static-routes", dest="static_routes", help="sets static routes (see manpage)")
p.add_option("--template-files", dest="template_files",help="specify files to be generated from templates during a sync")
@@ -245,6 +246,8 @@ class SystemFunction(commands.CobblerFunction):
obj.set_template_files(self.options.template_files,self.options.inplace)
if self.options.name_servers is not None:
obj.set_name_servers(self.options.name_servers)
+ if self.options.name_servers_search is not None:
+ obj.set_name_servers_search(self.options.name_servers_search)
if self.options.redhat_management_key is not None:
obj.set_redhat_management_key(self.options.redhat_management_key)
diff --git a/cobbler/remote.py b/cobbler/remote.py
index a36ade31..b4e3deea 100644
--- a/cobbler/remote.py
+++ b/cobbler/remote.py
@@ -1900,6 +1900,7 @@ def test_xmlrpc_rw():
server.modify_profile(pid, "mgmt-classes", "one two three", token)
server.modify_profile(pid, "comment", "...", token)
server.modify_profile(pid, "name_servers", ["one","two"], token)
+ server.modify_profile(pid, "name_servers_search", ["one","two"], token)
server.modify_profile(pid, "redhat_management_key", "BETA", token)
server.save_profile(pid, token)
@@ -1918,6 +1919,7 @@ def test_xmlrpc_rw():
server.modify_system(sid, 'virt-path', "/opt/images", token)
server.modify_system(sid, 'virt-type', 'qemu', token)
server.modify_system(sid, 'name_servers', 'one two three four', token)
+ server.modify_system(sid, 'name_servers_search', 'one two three four', token)
server.modify_system(sid, 'modify-interface', {
"macaddress-eth0" : "AA:BB:CC:EE:EE:EE",
"ipaddress-eth0" : "192.168.10.50",
diff --git a/cobbler/settings.py b/cobbler/settings.py
index e87536c7..5f4a708a 100644
--- a/cobbler/settings.py
+++ b/cobbler/settings.py
@@ -38,6 +38,7 @@ DEFAULTS = {
"cobbler_master" : '',
"default_kickstart" : "/var/lib/cobbler/kickstarts/default.ks",
"default_name_servers" : '',
+ "default_name_servers_search" : '',
"default_password_crypted" : "\$1\$mF86/UHC\$WvcIcX2t6crBz2onWxyac.",
"default_virt_bridge" : "xenbr0",
"default_virt_type" : "auto",
diff --git a/cobbler/webui/CobblerWeb.py b/cobbler/webui/CobblerWeb.py
index f29a9496..72f3659a 100644
--- a/cobbler/webui/CobblerWeb.py
+++ b/cobbler/webui/CobblerWeb.py
@@ -512,7 +512,7 @@ class CobblerWeb(object):
def system_save(self,name=None,comment=None,editmode="edit",profile=None,
kopts=None, koptspost=None, ksmeta=None, owners=None, server_override=None, netboot='n',
virtpath=None,virtram=None,virttype=None,virtcpus=None,virtfilesize=None,
- name_servers=None,
+ name_servers=None,name_servers_search=None,
power_type=None, power_user=None, power_pass=None, power_id=None, power_address=None,
gateway=None,hostname=None,redhatmanagementkey=None,delete1=None, delete2=None, **args):
@@ -565,6 +565,7 @@ class CobblerWeb(object):
self.remote.modify_system(system, 'power_id', power_id, self.token)
self.remote.modify_system(system, 'power_address', power_address, self.token)
self.remote.modify_system(system, 'name_servers', name_servers, self.token)
+ self.remote.modify_system(system, 'name_servers_search', name_servers_search, self.token)
self.remote.modify_system(system, 'gateway', gateway, self.token)
self.remote.modify_system(system, 'hostname', hostname, self.token)
self.remote.modify_system(system, 'redhat_management_key', redhatmanagementkey, self.token)
@@ -678,7 +679,7 @@ class CobblerWeb(object):
ksmeta=None,owners=None,enablemenu=None,virtfilesize=None,virtram=None,virttype=None,
virtpath=None,repos=None,dhcptag=None,delete1=False,delete2=False,
parent=None,virtcpus=None,virtbridge=None,subprofile=None,server_override=None,
- name_servers=None,redhatmanagementkey=None,recursive=False,**args):
+ name_servers=None,name_servers_search=None,redhatmanagementkey=None,recursive=False,**args):
if not self.__xmlrpc_setup():
return self.xmlrpc_auth_failure()
@@ -745,6 +746,7 @@ class CobblerWeb(object):
self.remote.modify_profile(profile, 'server', server_override, self.token)
self.remote.modify_profile(profile, 'comment', comment, self.token)
self.remote.modify_profile(profile, 'name_servers', name_servers, self.token)
+ self.remote.modify_profile(profile, 'name_servers_search', name_servers_search, self.token)
self.remote.modify_profile(profile, 'redhat_management_key', redhatmanagementkey, self.token)
if repos is None:
diff --git a/snippets/post_install_network_config b/snippets/post_install_network_config
index a0538bd5..a50c7610 100644
--- a/snippets/post_install_network_config
+++ b/snippets/post_install_network_config
@@ -204,6 +204,14 @@ echo "BOOTPROTO=dhcp" >> $devfile
#set $nct = $nct + 1
echo "DNS$nct=$nameserver" >> $devfile
#end for
+ #if $name_servers_search != ""
+sed -i -e "/^search /d" /etc/resolv.conf
+echo -n "search " >>/etc/resolv.conf
+ #for $nameserversearch in $name_servers_search
+echo -n "$nameserversearch " >>/etc/resolv.conf
+ #end for
+echo "" >>/etc/resolv.conf
+ #end if
#for $route in $static_routes
#set routepattern = $re.compile("[0-9/.]+:[0-9.]+")
#if $routepattern.match($route)
diff --git a/webui_templates/profile_edit.tmpl b/webui_templates/profile_edit.tmpl
index 960d5800..a1363dd4 100644
--- a/webui_templates/profile_edit.tmpl
+++ b/webui_templates/profile_edit.tmpl
@@ -245,12 +245,27 @@ function disablename(value)
</td>
<td>
#if $profile
- #set joined = " ".join($profile.name_servers)
- <input type="text" name="name_servers" id="name_servers" value="$joined">
+ #set joined = ", ".join($profile.name_servers)
+ <input type="text" size="255" style="width: 400px;" name="name_servers" id="name_servers" value="$joined" />
#else
- <input type="text" name="name_servers" id="name_servers" value="">
+ <input type="text" size="255" style="width: 400px;" name="name_servers" id="name_servers" value="" />
#end if
- <p class="context-tip">Name servers, space delimited, if not provided by DHCP</p>
+ <p class="context-tip">Name servers, comma delimited, if not provided by DHCP</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <label for="name_servers_search">Name Servers Search Path</label>
+ </td>
+ <td>
+ #if $profile
+ #set joined = ", ".join($profile.name_servers_search)
+ <input type="text" size="255" style="width: 400px;" name="name_servers_search" id="name_servers_search" value="$joined" />
+ #else
+ <input type="text" size="255" style="width: 400px;" name="name_servers_search" id="name_servers_search" value="" />
+ #end if
+ <p class="context-tip">Name servers search path, comma delimited, if not provided by DHCP</p>
</td>
</tr>
diff --git a/webui_templates/system_edit.tmpl b/webui_templates/system_edit.tmpl
index 92cd057e..372908dc 100644
--- a/webui_templates/system_edit.tmpl
+++ b/webui_templates/system_edit.tmpl
@@ -533,9 +533,9 @@ redhatmanagementkey"
</td>
<td class="netedit">
#if $system
- <input type="text" size="64" style="width: 150px;" name="hostname" id="hostname" value="$system.hostname" />
+ <input type="text" size="64" style="width: 200px;" name="hostname" id="hostname" value="$system.hostname" />
#else
- <input type="text" size="64" style="width: 150px;" name="hostname" id="hostname" />
+ <input type="text" size="64" style="width: 200px;" name="hostname" id="hostname" />
#end if
<p class="context-tip">Ex: "vanhalen.example.org". Used for /etc/sysconfig/network.</p>
</td>
@@ -562,12 +562,27 @@ redhatmanagementkey"
</td>
<td class="netedit">
#if $system
- #set joined = " ".join($system.name_servers)
- <input type="text" name="name_servers" id="name_servers" value="$joined">
+ #set joined = ", ".join($system.name_servers)
+ <input type="text" size="255" style="width: 400px;" name="name_servers" id="name_servers" value="$joined" />
#else
- <input type="text" name="name_servers" id="name_servers" value="<<inherit>>">
+ <input type="text" size="255" style="width: 400px;" name="name_servers" id="name_servers" value="<<inherit>>" />
#end if
- <p class="context-tip">Name servers, space delimited, if not provided by DHCP</p>
+ <p class="context-tip">Name servers, comma delimited, if not provided by DHCP</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="netedit">
+ <label for="name_servers_search">Name Servers Search Path</label>
+ </td>
+ <td class="netedit">
+ #if $system
+ #set joined = ", ".join($system.name_servers_search)
+ <input type="text" size="255" style="width: 400px;" name="name_servers_search" id="name_servers_search" value="$joined" />
+ #else
+ <input type="text" size="255" style="width: 400px;" name="name_servers_search" id="name_servers_search" value="<<inherit>>" />
+ #end if
+ <p class="context-tip">Name servers search path, comma delimited, if not provided by DHCP</p>
</td>
</tr>