lorax-composer: pass customization.kernel append to extra_boot_args
This allows iso builds to include the extra kernel boot parameters by
passing them to the arch-specific live/*tmpl template.
Also adds tests to make sure it is written to config.toml in the build
metadata.
(cherry picked from commit d7f5f3064b)
Resolves: rhbz#1690068
			
			
This commit is contained in:
		
							parent
							
								
									251eb73625
								
							
						
					
					
						commit
						a9ab3407b8
					
				| @ -139,6 +139,21 @@ def bootloader_append(line, kernel_append): | ||||
|     return str(ks.handler.bootloader).splitlines()[-1] | ||||
| 
 | ||||
| 
 | ||||
| def get_kernel_append(recipe): | ||||
|     """Return the customizations.kernel append value | ||||
| 
 | ||||
|     :param recipe: | ||||
|     :type recipe: Recipe object | ||||
|     :returns: append value or empty string | ||||
|     :rtype: str | ||||
|     """ | ||||
|     if "customizations" not in recipe or \ | ||||
|        "kernel" not in recipe["customizations"] or \ | ||||
|        "append" not in recipe["customizations"]["kernel"]: | ||||
|         return "" | ||||
|     return recipe["customizations"]["kernel"]["append"] | ||||
| 
 | ||||
| 
 | ||||
| def customize_ks_template(ks_template, recipe): | ||||
|     """ Customize the kickstart template and return it | ||||
| 
 | ||||
| @ -150,11 +165,9 @@ def customize_ks_template(ks_template, recipe): | ||||
|     Apply customizations.kernel.append to the bootloader argument in the template. | ||||
|     Add bootloader line if it is missing. | ||||
|     """ | ||||
|     if "customizations" not in recipe or \ | ||||
|        "kernel" not in recipe["customizations"] or \ | ||||
|        "append" not in recipe["customizations"]["kernel"]: | ||||
|     kernel_append = get_kernel_append(recipe) | ||||
|     if not kernel_append: | ||||
|         return ks_template | ||||
|     kernel_append = recipe["customizations"]["kernel"]["append"] | ||||
|     found_bootloader = False | ||||
|     output = StringIO() | ||||
|     for line in ks_template.splitlines(): | ||||
| @ -478,6 +491,7 @@ def start_build(cfg, dnflock, gitlock, branch, recipe_name, compose_type, test_m | ||||
|     cfg_args["project"] = os_release.get("NAME", "") | ||||
|     cfg_args["releasever"] = os_release.get("VERSION_ID", "") | ||||
|     cfg_args["volid"] = "" | ||||
|     cfg_args["extra_boot_args"] = get_kernel_append(recipe) | ||||
| 
 | ||||
|     cfg_args.update({ | ||||
|         "compression":      "xz", | ||||
|  | ||||
| @ -1043,6 +1043,12 @@ class ServerTestCase(unittest.TestCase): | ||||
|         self.assertTrue("network --hostname=" in final_ks) | ||||
|         self.assertTrue("sshkey --user root" in final_ks) | ||||
| 
 | ||||
|         # Examine the config.toml to make sure it has an empty extra_boot_args | ||||
|         cfg_path = joinpaths(self.repo_dir, "var/lib/lorax/composer/results/", build_id, "config.toml") | ||||
|         cfg_dict = toml.loads(open(cfg_path, "r").read()) | ||||
|         self.assertTrue("extra_boot_args" in cfg_dict) | ||||
|         self.assertEqual(cfg_dict["extra_boot_args"], "") | ||||
| 
 | ||||
|         # Delete the finished build | ||||
|         # Test the /api/v0/compose/delete/<uuid> route | ||||
|         resp = self.server.delete("/api/v0/compose/delete/%s" % build_id) | ||||
| @ -1196,6 +1202,12 @@ class ServerTestCase(unittest.TestCase): | ||||
|         self.assertNotEqual(bootloader_line, "", "No bootloader line found") | ||||
|         self.assertTrue("nosmt=force" in bootloader_line) | ||||
| 
 | ||||
|         # Examine the config.toml to make sure it was written there as well | ||||
|         cfg_path = joinpaths(self.repo_dir, "var/lib/lorax/composer/results/", build_id, "config.toml") | ||||
|         cfg_dict = toml.loads(open(cfg_path, "r").read()) | ||||
|         self.assertTrue("extra_boot_args" in cfg_dict) | ||||
|         self.assertEqual(cfg_dict["extra_boot_args"], "nosmt=force") | ||||
| 
 | ||||
|     def assertInputError(self, resp): | ||||
|         """Check all the conditions for a successful input check error result""" | ||||
|         data = json.loads(resp.data) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user