summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcobbler/cobbler.py6
-rw-r--r--cobbler/item_profile.py13
-rw-r--r--cobbler/item_system.py40
-rw-r--r--docs/cobbler.pod8
4 files changed, 47 insertions, 20 deletions
diff --git a/cobbler/cobbler.py b/cobbler/cobbler.py
index 4b035a1..78351f6 100755
--- a/cobbler/cobbler.py
+++ b/cobbler/cobbler.py
@@ -447,7 +447,8 @@ class BootCLI:
'--repos' : lambda(a) : profile.set_repos(a),
'--virt-path' : lambda(a) : profile.set_virt_path(a),
'--virt-type' : lambda(a) : profile.set_virt_type(a),
- '--dhcp-tag' : lambda(a) : profile.set_dhcp_tag(a)
+ '--dhcp-tag' : lambda(a) : profile.set_dhcp_tag(a),
+ '--server-override' : lambda(a) : profile.set_server(a)
}
def on_ok():
if newname is not None:
@@ -578,7 +579,8 @@ class BootCLI:
'--kickstart' : lambda(a) : sys.set_kickstart(a),
'--netboot-enabled' : lambda(a) : sys.set_netboot_enabled(a),
'--virt-path' : lambda(a) : sys.set_virt_path(a),
- '--virt-type' : lambda(a) : sys.set_virt_type(a)
+ '--virt-type' : lambda(a) : sys.set_virt_type(a),
+ '--server-override' : lambda(a) : sys.set_server(a)
}
def on_ok():
diff --git a/cobbler/item_profile.py b/cobbler/item_profile.py
index 47750ad..4e1c7c1 100644
--- a/cobbler/item_profile.py
+++ b/cobbler/item_profile.py
@@ -48,6 +48,7 @@ class Profile(item.Item):
self.virt_bridge = (self.settings.default_virt_bridge, '<<inherit>>')[is_subobject]
self.dhcp_tag = ("default", '<<inherit>>')[is_subobject]
self.parent = ''
+ self.server = "<<inherit>>"
def from_datastruct(self,seed_data):
"""
@@ -63,6 +64,7 @@ class Profile(item.Item):
self.repos = self.load_item(seed_data,'repos', [])
self.depth = self.load_item(seed_data,'depth', 1)
self.dhcp_tag = self.load_item(seed_data,'dhcp_tag', 'default')
+ self.server = self.load_item(seed_data,'server', '<<inherit>>')
# backwards compatibility
if type(self.repos) != list:
@@ -128,6 +130,10 @@ class Profile(item.Item):
self.dhcp_tag = dhcp_tag
return True
+ def set_server(self,server):
+ self.server = server
+ return True
+
def set_repos(self,repos):
# allow the magic inherit string to persist
@@ -333,7 +339,8 @@ class Profile(item.Item):
'depth' : self.depth,
'virt_type' : self.virt_type,
'virt_path' : self.virt_path,
- 'dhcp_tag' : self.dhcp_tag
+ 'dhcp_tag' : self.dhcp_tag,
+ 'server' : self.server
}
def printable(self):
@@ -356,6 +363,7 @@ class Profile(item.Item):
buf = buf + _("virt cpus : %s\n") % self.virt_cpus
buf = buf + _("repos : %s\n") % self.repos
buf = buf + _("dhcp tag : %s\n") % self.dhcp_tag
+ buf = buf + _("server : %s\n") % self.server
return buf
def remote_methods(self):
@@ -374,6 +382,7 @@ class Profile(item.Item):
'virt-type' : self.set_virt_type,
'virt-bridge' : self.set_virt_bridge,
'virt-cpus' : self.set_virt_cpus,
- 'dhcp-tag' : self.set_dhcp_tag
+ 'dhcp-tag' : self.set_dhcp_tag,
+ 'server' : self.server
}
diff --git a/cobbler/item_system.py b/cobbler/item_system.py
index 749919a..9fa4504 100644
--- a/cobbler/item_system.py
+++ b/cobbler/item_system.py
@@ -37,8 +37,9 @@ class System(item.Item):
self.netboot_enabled = (1, '<<inherit>>')[is_subobject]
self.depth = 2
self.kickstart = "<<inherit>>" # use value in profile
- self.virt_path = "<<inherit>>" # use value in profile
- self.virt_type = "<<inherit>>" # use value in profile
+ self.virt_path = "<<inherit>>" # ""
+ self.virt_type = "<<inherit>>" # ""
+ self.server = "<<inherit>>" # "" (or settings)
def delete_interface(self,name):
"""
@@ -87,6 +88,7 @@ class System(item.Item):
self.virt_path = self.load_item(seed_data, 'virt_path', '<<inherit>>')
self.virt_type = self.load_item(seed_data, 'virt_type', '<<inherit>>')
self.netboot_enabled = self.load_item(seed_data, 'netboot_enabled', 1)
+ self.server = self.load_item(seed_data, 'server', '<<inherit>>')
# backwards compat, these settings are now part of the interfaces data structure
# and will contain data only in upgrade scenarios.
@@ -152,6 +154,14 @@ class System(item.Item):
return True
+ def set_server(self,server):
+ """
+ If a system can't reach the boot server at the value configured in settings
+ because it doesn't have the same name on it's subnet this is there for an override.
+ """
+ self.server = server
+ return True
+
def get_mac_address(self,interface="intf0"):
"""
Get the mac address, which may be implicit in the object name or explicit with --mac-address.
@@ -332,8 +342,8 @@ class System(item.Item):
'kickstart' : self.kickstart,
'virt_type' : self.virt_type,
'virt_path' : self.virt_path,
- #'dhcp_tag' : self.dhcp_tag,
- 'interfaces' : self.interfaces
+ 'interfaces' : self.interfaces,
+ 'server' : self.server
}
def printable(self):
@@ -346,6 +356,7 @@ class System(item.Item):
buf = buf + _("kickstart : %s\n") % self.kickstart
buf = buf + _("virt type : %s\n") % self.virt_type
buf = buf + _("virt path : %s\n") % self.virt_path
+ buf = buf + _("server : %s\n") % self.server
counter = 0
for (name,x) in self.interfaces.iteritems():
@@ -380,16 +391,17 @@ class System(item.Item):
def remote_methods(self):
return {
- 'name' : self.set_name,
- 'profile' : self.set_profile,
- 'kopts' : self.set_kernel_options,
- 'ksmeta' : self.set_ksmeta,
- 'hostname' : self.set_hostname,
- 'kickstart' : self.set_kickstart,
- 'netboot-enabled' : self.set_netboot_enabled,
- 'virt-path' : self.set_virt_path,
- 'virt-type' : self.set_virt_type,
+ 'name' : self.set_name,
+ 'profile' : self.set_profile,
+ 'kopts' : self.set_kernel_options,
+ 'ksmeta' : self.set_ksmeta,
+ 'hostname' : self.set_hostname,
+ 'kickstart' : self.set_kickstart,
+ 'netboot-enabled' : self.set_netboot_enabled,
+ 'virt-path' : self.set_virt_path,
+ 'virt-type' : self.set_virt_type,
'modify-interface' : self.modify_interface,
- 'delete-interface' : self.delete_interface
+ 'delete-interface' : self.delete_interface,
+ 'server' : self.set_server
}
diff --git a/docs/cobbler.pod b/docs/cobbler.pod
index 501f034..44723b3 100644
--- a/docs/cobbler.pod
+++ b/docs/cobbler.pod
@@ -108,7 +108,7 @@ The file used for the answer file, regardless of the breed setting, is the value
A profile associates a distribution to additional specialized options, such as a kickstart automation file. Profiles are the core unit of provisioning and at least one profile must exist for every distribution to be provisioned. A profile might represent, for instance, a web server or desktop configuration. In this way, profiles define a role to be performed.
-B<cobbler profile add --name=string --distro=string [--kickstart=path] [--kopts=string] [--ksmeta=string] [--virt-file-size=gigabytes] [--virt-ram=megabytes] [--virt-type=string] [--virt-cpus=integer] [--virt-path=string] [--virt-bridge=string]>
+B<cobbler profile add --name=string --distro=string [--kickstart=path] [--kopts=string] [--ksmeta=string] [--virt-file-size=gigabytes] [--virt-ram=megabytes] [--virt-type=string] [--virt-cpus=integer] [--virt-path=string] [--virt-bridge=string] [--server-override]>
Arguments are as listed for distributions, save for the removal of "arch" and "breed", and with the additions listed below:
@@ -178,13 +178,17 @@ Example: If profile A has a --virt-file-size of 5 and B does not specify a size
=back
+=item server-override
+
+This parameter should be useful only in select circumstances. If machines are on a subnet that cannot access the cobbler server using the name/IP as configured in the cobbler settings file, use this parameter to override that server name. See also --dhcp-tag for configuring the next server and DHCP informmation of the system if you are also using Cobbler to help manage your DHCP configuration.
+
=head2 ADDING A SYSTEM
System records map a piece of hardware (or a virtual machine) with the cobbler profile to be assigned to run on it. This may be thought of as chosing a role for a specific system.
Note that if provisioning via koan and PXE menus alone, it is not required to create system records, though they are useful when system specific customizations are required. One such customization would be defining the MAC address. If there is a specific role inteded for a given machine, system records should be created for it.
-B<cobbler system add --name=string --profile=string [--mac=macaddress] [--ip=ipaddress] [--hostname=hostname] [--kopts=string] [--ksmeta=string] [--kickstart=path] [--netboot-enabled=Y/N>
+B<cobbler system add --name=string --profile=string [--mac=macaddress] [--ip=ipaddress] [--hostname=hostname] [--kopts=string] [--ksmeta=string] [--kickstart=path] [--netboot-enabled=Y/N] [--server-override=string]>
Adds a cobbler System to the configuration. Arguments are specified as per "profile add" with
the following changes: