diff options
Diffstat (limited to 'cobbler')
-rw-r--r-- | cobbler/action_sync.py | 19 | ||||
-rw-r--r-- | cobbler/cobblerd.py | 22 | ||||
-rw-r--r-- | cobbler/settings.py | 3 |
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 } |