summaryrefslogtreecommitdiffstats
path: root/cobbler
diff options
context:
space:
mode:
Diffstat (limited to 'cobbler')
-rw-r--r--cobbler/action_sync.py19
-rw-r--r--cobbler/cobblerd.py22
-rw-r--r--cobbler/settings.py3
3 files changed, 36 insertions, 8 deletions
diff --git a/cobbler/action_sync.py b/cobbler/action_sync.py
index 9f45fb00..bc587be0 100644
--- a/cobbler/action_sync.py
+++ b/cobbler/action_sync.py
@@ -338,7 +338,7 @@ class BootSync:
meta.update(ksmeta) # make available at top level
meta["yum_repo_stanza"] = self.generate_repo_stanza(g)
meta["yum_config_stanza"] = self.generate_config_stanza(g)
- meta["kickstart_done"] = self.generate_kickstart_signal(g, is_system=False)
+ meta["kickstart_done"] = self.generate_kickstart_signal(g, None)
meta["kernel_options"] = utils.hash_to_string(meta["kernel_options"])
kfile = open(kickstart_path)
self.apply_template(kfile, meta, dest)
@@ -348,12 +348,17 @@ class BootSync:
msg = "err_kickstart2"
raise CX(_("Error copying kickstart file %(src)s to %(dest)s") % { "src" : kickstart_path, "dest" : dest })
- def generate_kickstart_signal(self, obj, is_system=False):
- pattern = "wget http://%s/cblr/watcher.py?%s_%s=%s -b"
- if is_system:
- return pattern % (self.settings.server, "system", "done", obj.name)
+ def generate_kickstart_signal(self, profile, system=None):
+ pattern1 = "wget http://%s/cblr/watcher.py?%s_%s=%s -b"
+ pattern2 = "wget http://%s/cgi-bin/nopxe.cgi?system=%s -b"
+ buf = ""
+ if system is not None:
+ buf = buf + pattern1 % (self.settings.server, "system", "done", system.name)
+ if str(self.settings.pxe_just_once).upper() in [ "1", "Y", "YES", "TRUE" ]:
+ buf = buf + "\n" + pattern2 % (self.settings.server, system.name)
else:
- return pattern % (self.settings.server, "profile", "done", obj.name)
+ buf = buf + pattern1 % (self.settings.server, "profile", "done", profile.name)
+ return buf
def generate_repo_stanza(self, profile):
# returns the line of repo additions (Anaconda supports in FC-6 and later) that adds
@@ -441,7 +446,7 @@ class BootSync:
meta.update(ksmeta) # make available at top level
meta["yum_repo_stanza"] = self.generate_repo_stanza(profile)
meta["yum_config_stanza"] = self.generate_config_stanza(profile)
- meta["kickstart_done"] = self.generate_kickstart_signal(profile, is_system=True)
+ meta["kickstart_done"] = self.generate_kickstart_signal(profile, s)
meta["kernel_options"] = utils.hash_to_string(meta["kernel_options"])
kfile = open(kickstart_path)
self.apply_template(kfile, meta, dest)
diff --git a/cobbler/cobblerd.py b/cobbler/cobblerd.py
index c796567d..54294cb1 100644
--- a/cobbler/cobblerd.py
+++ b/cobbler/cobblerd.py
@@ -104,6 +104,28 @@ class CobblerXMLRPCInterface:
def __sorter(self,a,b):
return cmp(a["name"],b["name"])
+ def get_settings(self):
+ self.api.clear()
+ self.api.deserialize()
+ data = self.api.settings().to_datastruct()
+ return self.fix_none(data)
+
+ def disable_netboot(self,name):
+ # used by nopxe.cgi
+ self.api.clear()
+ self.api.deserialize()
+ if not self.api.settings().pxe_just_once:
+ # feature disabled!
+ return False
+ systems = self.api.systems()
+ obj = systems.find(name)
+ if obj == None:
+ # system not found!
+ return False
+ obj.set_netboot_enabled(0)
+ systems.add(obj,with_copy=True)
+ return True
+
def __get_all(self,collection):
self.api.clear()
self.api.deserialize()
diff --git a/cobbler/settings.py b/cobbler/settings.py
index ac897156..d2e4b391 100644
--- a/cobbler/settings.py
+++ b/cobbler/settings.py
@@ -48,7 +48,8 @@ DEFAULTS = {
"xmlrpc_port" : 25151,
"minimize_syncs" : 1,
"yum_core_mirror_from_server" : 0,
- "default_virt_type" : "auto"
+ "default_virt_type" : "auto",
+ "pxe_just_once" : 0
}