Often when testing I will specify the inst.stage2= kernel option to tell Fedora/anaconda where to download the stage2 image. This then would differ and needs to override both the tree= ks_meta option and the kickstart url option.
I'm wondering what the best way would be to support this (if at all). Currently koan does this: # If breed is ubuntu/debian we need to source the install tree differently # as preseeds are used instead of kickstarts. if profile_data["breed"] in ["ubuntu", "debian", "suse"]: self.get_install_tree_from_profile_data(profile_data) else: # find_kickstart source tree in the kickstart file self.get_install_tree_from_kickstart(profile_data) I guess the kickstart data is in general better than the profile data as the kickstart template could conceivably not use the $tree variable at all. Perhaps add a new function, so something like: if profile_data["breed"] in ["ubuntu", "debian", "suse"]: self.get_install_tree_from_profile_data(profile_data) else: # find install source tree from kernel options if not self.get_install_tree_from_kernel_options(profile_data) # Otherwise find kickstart source tree in the kickstart file self.get_install_tree_from_kickstart(profile_data) def get_install_tree_from_kernel_options(self, profile_data): """ Split kernel options to obtain the inst.stage2 path. Generate the install_tree using the http_server and the tree obtained from the inst.stage2 path """ try: tree = profile_data["kernel_options"].split() # Ensure we only take the tree in case ks_meta args are passed # First check for tree= in ks_meta arguments meta_re = re.compile('inst.stage2=') tree_found = '' for entry in tree: if meta_re.match(entry): tree_found = entry.split("=")[-1] break if tree_found == '': return False else: tree = tree_found tree_re = re.compile('(http|ftp|nfs):') # Next check for installation tree on remote server if tree_re.match(tree): tree = tree.replace( "@@http_server@@", profile_data["http_server"]) profile_data["install_tree"] = tree else: # Now take the first parameter as the local path profile_data["install_tree"] = "http://" + \ profile_data["http_server"] + tree if self.safe_load(profile_data, "install_tree"): print("install_tree:", profile_data["install_tree"]) else: print("warning: kickstart found but no install_tree found") except: pass There's a fair amount of duplication with get_install_tree_from_profile_data(), so perhaps a helper function is in order. Thoughts? -- Orion Poplawski Technical Manager 303-415-9701 x222 NWRA, Boulder/CoRA Office FAX: 303-415-9702 3380 Mitchell Lane or...@nwra.com Boulder, CO 80301 http://www.nwra.com _______________________________________________ cobbler mailing list cobbler@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/cobbler