diff --git a/docs/html/.buildinfo b/docs/html/.buildinfo index 1e9c4cd9..c19f2a6e 100644 --- a/docs/html/.buildinfo +++ b/docs/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 6e55fdb35e04e7527afc63d14f55eaf0 +config: 976fdd7ad1c7255de97a1c91fa7bf7af tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/html/.doctrees/composer-cli.doctree b/docs/html/.doctrees/composer-cli.doctree index f26ac124..0f18d8a5 100644 Binary files a/docs/html/.doctrees/composer-cli.doctree and b/docs/html/.doctrees/composer-cli.doctree differ diff --git a/docs/html/.doctrees/environment.pickle b/docs/html/.doctrees/environment.pickle index 4264e130..45b24fb1 100644 Binary files a/docs/html/.doctrees/environment.pickle and b/docs/html/.doctrees/environment.pickle differ diff --git a/docs/html/.doctrees/livemedia-creator.doctree b/docs/html/.doctrees/livemedia-creator.doctree index 92a5db06..f52af600 100644 Binary files a/docs/html/.doctrees/livemedia-creator.doctree and b/docs/html/.doctrees/livemedia-creator.doctree differ diff --git a/docs/html/.doctrees/lorax-composer.doctree b/docs/html/.doctrees/lorax-composer.doctree index cad5f84e..cc0c7cfd 100644 Binary files a/docs/html/.doctrees/lorax-composer.doctree and b/docs/html/.doctrees/lorax-composer.doctree differ diff --git a/docs/html/.doctrees/pylorax.api.doctree b/docs/html/.doctrees/pylorax.api.doctree index f6e96c6f..aed81763 100644 Binary files a/docs/html/.doctrees/pylorax.api.doctree and b/docs/html/.doctrees/pylorax.api.doctree differ diff --git a/docs/html/.doctrees/pylorax.doctree b/docs/html/.doctrees/pylorax.doctree index 92f5b80a..d89912e7 100644 Binary files a/docs/html/.doctrees/pylorax.doctree and b/docs/html/.doctrees/pylorax.doctree differ diff --git a/docs/html/_modules/composer/cli.html b/docs/html/_modules/composer/cli.html index 93dcb600..90cff51b 100644 --- a/docs/html/_modules/composer/cli.html +++ b/docs/html/_modules/composer/cli.html @@ -8,7 +8,7 @@ - composer.cli — Lorax 31.1 documentation + composer.cli — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/blueprints.html b/docs/html/_modules/composer/cli/blueprints.html index 8806834e..6220c9f6 100644 --- a/docs/html/_modules/composer/cli/blueprints.html +++ b/docs/html/_modules/composer/cli/blueprints.html @@ -8,7 +8,7 @@ - composer.cli.blueprints — Lorax 31.1 documentation + composer.cli.blueprints — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/cmdline.html b/docs/html/_modules/composer/cli/cmdline.html index 814d29d8..ed5cb3ec 100644 --- a/docs/html/_modules/composer/cli/cmdline.html +++ b/docs/html/_modules/composer/cli/cmdline.html @@ -8,7 +8,7 @@ - composer.cli.cmdline — Lorax 31.1 documentation + composer.cli.cmdline — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/compose.html b/docs/html/_modules/composer/cli/compose.html index d5b920eb..05ae0a41 100644 --- a/docs/html/_modules/composer/cli/compose.html +++ b/docs/html/_modules/composer/cli/compose.html @@ -8,7 +8,7 @@ - composer.cli.compose — Lorax 31.1 documentation + composer.cli.compose — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/modules.html b/docs/html/_modules/composer/cli/modules.html index 45f04703..5049d4a5 100644 --- a/docs/html/_modules/composer/cli/modules.html +++ b/docs/html/_modules/composer/cli/modules.html @@ -8,7 +8,7 @@ - composer.cli.modules — Lorax 31.1 documentation + composer.cli.modules — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/projects.html b/docs/html/_modules/composer/cli/projects.html index 6c23609f..1adc4c7c 100644 --- a/docs/html/_modules/composer/cli/projects.html +++ b/docs/html/_modules/composer/cli/projects.html @@ -8,7 +8,7 @@ - composer.cli.projects — Lorax 31.1 documentation + composer.cli.projects — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/sources.html b/docs/html/_modules/composer/cli/sources.html index f00c18c9..e3dc53fc 100644 --- a/docs/html/_modules/composer/cli/sources.html +++ b/docs/html/_modules/composer/cli/sources.html @@ -8,7 +8,7 @@ - composer.cli.sources — Lorax 31.1 documentation + composer.cli.sources — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/status.html b/docs/html/_modules/composer/cli/status.html index ca6f8577..0f6df1ec 100644 --- a/docs/html/_modules/composer/cli/status.html +++ b/docs/html/_modules/composer/cli/status.html @@ -8,7 +8,7 @@ - composer.cli.status — Lorax 31.1 documentation + composer.cli.status — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/cli/utilities.html b/docs/html/_modules/composer/cli/utilities.html index 63074aa4..ef187fab 100644 --- a/docs/html/_modules/composer/cli/utilities.html +++ b/docs/html/_modules/composer/cli/utilities.html @@ -8,7 +8,7 @@ - composer.cli.utilities — Lorax 31.1 documentation + composer.cli.utilities — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/http_client.html b/docs/html/_modules/composer/http_client.html index 13fe4d35..5ee4274b 100644 --- a/docs/html/_modules/composer/http_client.html +++ b/docs/html/_modules/composer/http_client.html @@ -8,7 +8,7 @@ - composer.http_client — Lorax 31.1 documentation + composer.http_client — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/composer/unix_socket.html b/docs/html/_modules/composer/unix_socket.html index e81ef60d..ae8813cb 100644 --- a/docs/html/_modules/composer/unix_socket.html +++ b/docs/html/_modules/composer/unix_socket.html @@ -8,7 +8,7 @@ - composer.unix_socket — Lorax 31.1 documentation + composer.unix_socket — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/index.html b/docs/html/_modules/index.html index 8eb736b0..ae59ec97 100644 --- a/docs/html/_modules/index.html +++ b/docs/html/_modules/index.html @@ -8,7 +8,7 @@ - Overview: module code — Lorax 31.1 documentation + Overview: module code — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax.html b/docs/html/_modules/pylorax.html index 0e29bc37..ee155b43 100644 --- a/docs/html/_modules/pylorax.html +++ b/docs/html/_modules/pylorax.html @@ -8,7 +8,7 @@ - pylorax — Lorax 31.1 documentation + pylorax — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/bisect.html b/docs/html/_modules/pylorax/api/bisect.html index 2757e28a..310e3c81 100644 --- a/docs/html/_modules/pylorax/api/bisect.html +++ b/docs/html/_modules/pylorax/api/bisect.html @@ -8,7 +8,7 @@ - pylorax.api.bisect — Lorax 31.1 documentation + pylorax.api.bisect — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/checkparams.html b/docs/html/_modules/pylorax/api/checkparams.html index 04d45da9..610654f5 100644 --- a/docs/html/_modules/pylorax/api/checkparams.html +++ b/docs/html/_modules/pylorax/api/checkparams.html @@ -8,7 +8,7 @@ - pylorax.api.checkparams — Lorax 31.1 documentation + pylorax.api.checkparams — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/cmdline.html b/docs/html/_modules/pylorax/api/cmdline.html index 6fb827ff..9dfc16f4 100644 --- a/docs/html/_modules/pylorax/api/cmdline.html +++ b/docs/html/_modules/pylorax/api/cmdline.html @@ -8,7 +8,7 @@ - pylorax.api.cmdline — Lorax 31.1 documentation + pylorax.api.cmdline — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/compose.html b/docs/html/_modules/pylorax/api/compose.html index 730f4258..bd5d9c5d 100644 --- a/docs/html/_modules/pylorax/api/compose.html +++ b/docs/html/_modules/pylorax/api/compose.html @@ -8,7 +8,7 @@ - pylorax.api.compose — Lorax 31.1 documentation + pylorax.api.compose — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
@@ -238,7 +238,7 @@ pkgs = [(name, "*") for name in ks.handler.packages.packageList] grps = [grp.name for grp in ks.handler.packages.groupList] try: - _ = projects_depsolve(dbo, pkgs, grps) + projects_depsolve(dbo, pkgs, grps) except ProjectsError as e: template_errors.append("Error depsolving %s: %s" % (compose_type, str(e))) @@ -322,6 +322,240 @@ return recipe["customizations"]["kernel"]["append"] +
[docs]def timezone_cmd(line, settings): + """ Update the timezone line with the settings + + :param line: The timezone ... line + :type line: str + :param settings: A dict with timezone and/or ntpservers list + :type settings: dict + + Using pykickstart to process the line is the best way to make sure it + is parsed correctly, and re-assembled for inclusion into the final kickstart + """ + ks_version = makeVersion() + ks = KickstartParser(ks_version, errorsAreFatal=False, missingIncludeIsFatal=False) + ks.readKickstartFromString(line) + + if "timezone" in settings: + ks.handler.timezone.timezone = settings["timezone"] + if "ntpservers" in settings: + ks.handler.timezone.ntpservers = settings["ntpservers"] + + # Converting back to a string includes a comment, return just the timezone line + return str(ks.handler.timezone).splitlines()[-1]
+ + +
[docs]def get_timezone_settings(recipe): + """Return the customizations.timezone dict + + :param recipe: + :type recipe: Recipe object + :returns: append value or empty string + :rtype: dict + """ + if "customizations" not in recipe or \ + "timezone" not in recipe["customizations"]: + return {} + return recipe["customizations"]["timezone"]
+ + +
[docs]def lang_cmd(line, languages): + """ Update the lang line with the languages + + :param line: The lang ... line + :type line: str + :param settings: The list of languages + :type settings: list + + Using pykickstart to process the line is the best way to make sure it + is parsed correctly, and re-assembled for inclusion into the final kickstart + """ + ks_version = makeVersion() + ks = KickstartParser(ks_version, errorsAreFatal=False, missingIncludeIsFatal=False) + ks.readKickstartFromString(line) + + if languages: + ks.handler.lang.lang = languages[0] + + if len(languages) > 1: + ks.handler.lang.addsupport = languages[1:] + + # Converting back to a string includes a comment, return just the lang line + return str(ks.handler.lang).splitlines()[-1]
+ + +
[docs]def get_languages(recipe): + """Return the customizations.locale.languages list + + :param recipe: The recipe + :type recipe: Recipe object + :returns: list of language strings + :rtype: list + """ + if "customizations" not in recipe or \ + "locale" not in recipe["customizations"] or \ + "languages" not in recipe["customizations"]["locale"]: + return [] + return recipe["customizations"]["locale"]["languages"]
+ + +
[docs]def keyboard_cmd(line, layout): + """ Update the keyboard line with the layout + + :param line: The keyboard ... line + :type line: str + :param settings: The keyboard layout + :type settings: str + + Using pykickstart to process the line is the best way to make sure it + is parsed correctly, and re-assembled for inclusion into the final kickstart + """ + ks_version = makeVersion() + ks = KickstartParser(ks_version, errorsAreFatal=False, missingIncludeIsFatal=False) + ks.readKickstartFromString(line) + + if layout: + ks.handler.keyboard.keyboard = layout + ks.handler.keyboard.vc_keymap = "" + ks.handler.keyboard.x_layouts = [] + + # Converting back to a string includes a comment, return just the keyboard line + return str(ks.handler.keyboard).splitlines()[-1]
+ + +
[docs]def get_keyboard_layout(recipe): + """Return the customizations.locale.keyboard list + + :param recipe: The recipe + :type recipe: Recipe object + :returns: The keyboard layout string + :rtype: str + """ + if "customizations" not in recipe or \ + "locale" not in recipe["customizations"] or \ + "keyboard" not in recipe["customizations"]["locale"]: + return [] + return recipe["customizations"]["locale"]["keyboard"]
+ + +
[docs]def firewall_cmd(line, settings): + """ Update the firewall line with the new ports and services + + :param line: The firewall ... line + :type line: str + :param settings: A dict with the list of services and ports to enable and disable + :type settings: dict + + Using pykickstart to process the line is the best way to make sure it + is parsed correctly, and re-assembled for inclusion into the final kickstart + """ + ks_version = makeVersion() + ks = KickstartParser(ks_version, errorsAreFatal=False, missingIncludeIsFatal=False) + ks.readKickstartFromString(line) + + # Do not override firewall --disabled + if ks.handler.firewall.enabled != False and settings: + ks.handler.firewall.ports = sorted(set(settings["ports"] + ks.handler.firewall.ports)) + ks.handler.firewall.services = sorted(set(settings["enabled"] + ks.handler.firewall.services)) + ks.handler.firewall.remove_services = sorted(set(settings["disabled"] + ks.handler.firewall.remove_services)) + + # Converting back to a string includes a comment, return just the keyboard line + return str(ks.handler.firewall).splitlines()[-1]
+ + +
[docs]def get_firewall_settings(recipe): + """Return the customizations.firewall settings + + :param recipe: The recipe + :type recipe: Recipe object + :returns: A dict of settings + :rtype: dict + """ + settings = {"ports": [], "enabled": [], "disabled": []} + + if "customizations" not in recipe or \ + "firewall" not in recipe["customizations"]: + return settings + + settings["ports"] = recipe["customizations"]["firewall"].get("ports", []) + + if "services" in recipe["customizations"]["firewall"]: + settings["enabled"] = recipe["customizations"]["firewall"]["services"].get("enabled", []) + settings["disabled"] = recipe["customizations"]["firewall"]["services"].get("disabled", []) + return settings
+ + +
[docs]def services_cmd(line, settings): + """ Update the services line with additional services to enable/disable + + :param line: The services ... line + :type line: str + :param settings: A dict with the list of services to enable and disable + :type settings: dict + + Using pykickstart to process the line is the best way to make sure it + is parsed correctly, and re-assembled for inclusion into the final kickstart + """ + # Empty services and no additional settings, return an empty string + if not line and not settings["enabled"] and not settings["disabled"]: + return "" + + ks_version = makeVersion() + ks = KickstartParser(ks_version, errorsAreFatal=False, missingIncludeIsFatal=False) + + # Allow passing in a 'default' so that the enable/disable may be applied to it, without + # parsing it and emitting a kickstart error message + if line != "services": + ks.readKickstartFromString(line) + + # Add to any existing services, removing any duplicates + ks.handler.services.enabled = sorted(set(settings["enabled"] + ks.handler.services.enabled)) + ks.handler.services.disabled = sorted(set(settings["disabled"] + ks.handler.services.disabled)) + + # Converting back to a string includes a comment, return just the keyboard line + return str(ks.handler.services).splitlines()[-1]
+ + +
[docs]def get_services(recipe): + """Return the customizations.services settings + + :param recipe: The recipe + :type recipe: Recipe object + :returns: A dict of settings + :rtype: dict + """ + settings = {"enabled": [], "disabled": []} + + if "customizations" not in recipe or \ + "services" not in recipe["customizations"]: + return settings + + settings["enabled"] = sorted(recipe["customizations"]["services"].get("enabled", [])) + settings["disabled"] = sorted(recipe["customizations"]["services"].get("disabled", [])) + return settings
+ + +
[docs]def get_default_services(recipe): + """Get the default string for services, based on recipe + :param recipe: The recipe + + :type recipe: Recipe object + :returns: string with "services" or "" + :rtype: str + + When no services have been selected we don't need to add anything to the kickstart + so return an empty string. Otherwise return "services" which will be updated with + the settings. + """ + services = get_services(recipe) + + if services["enabled"] or services["disabled"]: + return "services" + else: + return ""
+ +
[docs]def customize_ks_template(ks_template, recipe): """ Customize the kickstart template and return it @@ -330,26 +564,72 @@ :param recipe: :type recipe: Recipe object + Apply customizations to existing template commands, or add defaults for ones that are + missing and required. + Apply customizations.kernel.append to the bootloader argument in the template. Add bootloader line if it is missing. + + Add default timezone if needed. It does NOT replace an existing timezone entry """ - kernel_append = get_kernel_append(recipe) - if not kernel_append: - return ks_template - found_bootloader = False + # Commands to be modified [NEW-COMMAND-FUNC, NEW-VALUE, DEFAULT, REPLACE] + # The function is called with a kickstart command string and the value to replace + # The value is specific to the command, and is understood by the function + # The default is a complete kickstart command string, suitable for writing to the template + # If REPLACE is False it will not change an existing entry only add a missing one + commands = {"bootloader": [bootloader_append, + get_kernel_append(recipe), + 'bootloader --location=none', True], + "timezone": [timezone_cmd, + get_timezone_settings(recipe), + 'timezone UTC', False], + "lang": [lang_cmd, + get_languages(recipe), + 'lang en_US.UTF-8', True], + "keyboard": [keyboard_cmd, + get_keyboard_layout(recipe), + 'keyboard --xlayouts us --vckeymap us', True], + "firewall": [firewall_cmd, + get_firewall_settings(recipe), + 'firewall --enabled', True], + "services": [services_cmd, + get_services(recipe), + get_default_services(recipe), True] + } + found = {} + output = StringIO() for line in ks_template.splitlines(): - if not line.startswith("bootloader"): + for cmd in commands: + (new_command, value, default, replace) = commands[cmd] + if line.startswith(cmd): + found[cmd] = True + if value and replace: + log.debug("Replacing %s with %s", cmd, value) + print(new_command(line, value), file=output) + else: + log.debug("Skipping %s", cmd) + print(line, file=output) + break + else: + # No matches, write the line as-is print(line, file=output) - continue - found_bootloader = True - log.debug("Found bootloader line: %s", line) - print(bootloader_append(line, kernel_append), file=output) - if found_bootloader: - return output.getvalue() - else: - return 'bootloader --append="%s" --location=none' % kernel_append + output.getvalue()
+ # Write out defaults for the ones not found + # These must go FIRST because the template still needs to have the packages added + defaults = StringIO() + for cmd in commands: + if cmd in found: + continue + (new_command, value, default, _) = commands[cmd] + if value and default: + log.debug("Setting %s to use %s", cmd, value) + print(new_command(default, value), file=defaults) + elif default: + log.debug("Setting %s to %s", cmd, default) + print(default, file=defaults) + + return defaults.getvalue() + output.getvalue()
[docs]def write_ks_root(f, user): @@ -708,9 +988,13 @@ cfg_args["volid"] = "" cfg_args["extra_boot_args"] = get_kernel_append(recipe) + if "compression" not in cfg_args: + cfg_args["compression"] = "xz" + + if "compress_args" not in cfg_args: + cfg_args["compress_args"] = [] + cfg_args.update({ - "compression": "xz", - "compress_args": [], "ks": [ks_path], "logfile": log_dir, "timeout": 60, # 60 minute timeout @@ -755,6 +1039,7 @@ "make_appliance": False, "make_ami": False, "make_tar": True, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -762,9 +1047,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": False, # False instead of None because of TOML "qemu_args": [], "image_name": default_image_name("xz", "root.tar"), + "tar_disk_name": None, "image_only": True, "app_name": None, "app_template": None, @@ -776,6 +1063,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -783,9 +1071,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": False, # False instead of None because of TOML "qemu_args": [], "image_name": "live.iso", + "tar_disk_name": None, "fs_label": "Anaconda", # Live booting may expect this to be 'Anaconda' "image_only": False, "app_name": None, @@ -800,6 +1090,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -807,9 +1098,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": False, # False instead of None because of TOML "qemu_args": [], "image_name": "disk.img", + "tar_disk_name": None, "fs_label": "", "image_only": True, "app_name": None, @@ -822,6 +1115,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -829,9 +1123,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": "qcow2", "qemu_args": [], "image_name": "disk.qcow2", + "tar_disk_name": None, "fs_label": "", "image_only": True, "app_name": None, @@ -844,6 +1140,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -851,9 +1148,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": False, # False instead of None because of TOML "qemu_args": [], "image_name": "filesystem.img", + "tar_disk_name": None, "fs_label": "", "image_only": True, "app_name": None, @@ -866,6 +1165,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -873,9 +1173,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": False, "qemu_args": [], "image_name": "disk.ami", + "tar_disk_name": None, "fs_label": "", "image_only": True, "app_name": None, @@ -888,6 +1190,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -895,9 +1198,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": "vpc", "qemu_args": ["-o", "subformat=fixed,force_size"], "image_name": "disk.vhd", + "tar_disk_name": None, "fs_label": "", "image_only": True, "app_name": None, @@ -910,6 +1215,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -917,9 +1223,11 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": "vmdk", "qemu_args": [], "image_name": "disk.vmdk", + "tar_disk_name": None, "fs_label": "", "image_only": True, "app_name": None, @@ -932,6 +1240,7 @@ "make_appliance": False, "make_ami": False, "make_tar": False, + "make_tar_disk": False, "make_pxe_live": False, "make_ostree_live": False, "make_oci": False, @@ -939,9 +1248,88 @@ "ostree": False, "live_rootfs_keep_size": False, "live_rootfs_size": 0, + "image_size_align": 0, "image_type": "qcow2", "qemu_args": [], "image_name": "disk.qcow2", + "tar_disk_name": None, + "fs_label": "", + "image_only": True, + "app_name": None, + "app_template": None, + "app_file": None, + }, + "google": {"make_iso": False, + "make_disk": True, + "make_fsimage": False, + "make_appliance": False, + "make_ami": False, + "make_tar": False, + "make_tar_disk": True, + "make_pxe_live": False, + "make_ostree_live": False, + "make_oci": False, + "make_vagrant": False, + "ostree": False, + "live_rootfs_keep_size": False, + "live_rootfs_size": 0, + "image_size_align": 1024, + "image_type": False, # False instead of None because of TOML + "qemu_args": [], + "image_name": "disk.tar.gz", + "tar_disk_name": "disk.raw", + "compression": "gzip", + "compress_args": ["-9"], + "fs_label": "", + "image_only": True, + "app_name": None, + "app_template": None, + "app_file": None, + }, + "hyper-v": {"make_iso": False, + "make_disk": True, + "make_fsimage": False, + "make_appliance": False, + "make_ami": False, + "make_tar": False, + "make_tar_disk": False, + "make_pxe_live": False, + "make_ostree_live": False, + "make_oci": False, + "make_vagrant": False, + "ostree": False, + "live_rootfs_keep_size": False, + "live_rootfs_size": 0, + "image_size_align": 0, + "image_type": "vhdx", + "qemu_args": [], + "image_name": "disk.vhdx", + "tar_disk_name": None, + "fs_label": "", + "image_only": True, + "app_name": None, + "app_template": None, + "app_file": None, + }, + "alibaba": {"make_iso": False, + "make_disk": True, + "make_fsimage": False, + "make_appliance": False, + "make_ami": False, + "make_tar": False, + "make_tar_disk": False, + "make_pxe_live": False, + "make_ostree_live": False, + "make_oci": False, + "make_vagrant": False, + "ostree": False, + "live_rootfs_keep_size": False, + "live_rootfs_size": 0, + "image_size_align": 0, + "image_type": "qcow2", + "qemu_args": [], + "image_name": "disk.qcow2", + "tar_disk_name": None, "fs_label": "", "image_only": True, "app_name": None, diff --git a/docs/html/_modules/pylorax/api/config.html b/docs/html/_modules/pylorax/api/config.html index 78664630..722eab20 100644 --- a/docs/html/_modules/pylorax/api/config.html +++ b/docs/html/_modules/pylorax/api/config.html @@ -8,7 +8,7 @@ - pylorax.api.config — Lorax 31.1 documentation + pylorax.api.config — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/crossdomain.html b/docs/html/_modules/pylorax/api/crossdomain.html index 211fcc61..d34dad81 100644 --- a/docs/html/_modules/pylorax/api/crossdomain.html +++ b/docs/html/_modules/pylorax/api/crossdomain.html @@ -8,7 +8,7 @@ - pylorax.api.crossdomain — Lorax 31.1 documentation + pylorax.api.crossdomain — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/dnfbase.html b/docs/html/_modules/pylorax/api/dnfbase.html index 90e03364..2ec9b5c0 100644 --- a/docs/html/_modules/pylorax/api/dnfbase.html +++ b/docs/html/_modules/pylorax/api/dnfbase.html @@ -8,7 +8,7 @@ - pylorax.api.dnfbase — Lorax 31.1 documentation + pylorax.api.dnfbase — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/gitrpm.html b/docs/html/_modules/pylorax/api/gitrpm.html index fb3a97ec..6daedcd6 100644 --- a/docs/html/_modules/pylorax/api/gitrpm.html +++ b/docs/html/_modules/pylorax/api/gitrpm.html @@ -8,7 +8,7 @@ - pylorax.api.gitrpm — Lorax 31.1 documentation + pylorax.api.gitrpm — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
@@ -292,10 +292,17 @@ sourceIndex = self.add_source(GitArchiveTarball(gitRepo)) self.section_build += "tar -xvf %s\n" % self.sources[sourceIndex].sourceName dest = os.path.normpath(gitRepo["destination"]) + # Prevent double slash root + if dest == "/": + dest = "" self.create_parent_dirs(dest) - self.section_install += "cp -r %s $RPM_BUILD_ROOT/%s\n" % (gitRepo["rpmname"], dest) + self.section_install += "cp -r %s/. $RPM_BUILD_ROOT/%s\n" % (gitRepo["rpmname"], dest) sub = self.get_subpackage(None) - sub.section_files += "%s/" % dest
+ if not dest: + # / is special, we don't want to include / itself, just what's under it + sub.section_files += "/*\n" + else: + sub.section_files += "%s/\n" % dest
[docs]def make_git_rpm(gitRepo, dest): """ Create an rpm from the specified git repo diff --git a/docs/html/_modules/pylorax/api/projects.html b/docs/html/_modules/pylorax/api/projects.html index 4eaa4b02..6c74c6d5 100644 --- a/docs/html/_modules/pylorax/api/projects.html +++ b/docs/html/_modules/pylorax/api/projects.html @@ -8,7 +8,7 @@ - pylorax.api.projects — Lorax 31.1 documentation + pylorax.api.projects — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/queue.html b/docs/html/_modules/pylorax/api/queue.html index 910bdd63..fcb2361b 100644 --- a/docs/html/_modules/pylorax/api/queue.html +++ b/docs/html/_modules/pylorax/api/queue.html @@ -8,7 +8,7 @@ - pylorax.api.queue — Lorax 31.1 documentation + pylorax.api.queue — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/recipes.html b/docs/html/_modules/pylorax/api/recipes.html index f77bad12..9b5e3bb3 100644 --- a/docs/html/_modules/pylorax/api/recipes.html +++ b/docs/html/_modules/pylorax/api/recipes.html @@ -8,7 +8,7 @@ - pylorax.api.recipes — Lorax 31.1 documentation + pylorax.api.recipes — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
@@ -459,6 +459,12 @@ description = recipe_dict["description"] version = recipe_dict.get("version", None) customizations = recipe_dict.get("customizations", None) + + # [customizations] was incorrectly documented at first, so we have to support using it + # as [[customizations]] by grabbing the first element. + if isinstance(customizations, list): + customizations = customizations[0] + except KeyError as e: raise RecipeError("There was a problem parsing the recipe: %s" % str(e)) diff --git a/docs/html/_modules/pylorax/api/server.html b/docs/html/_modules/pylorax/api/server.html index e2e4f11c..1bbcfa17 100644 --- a/docs/html/_modules/pylorax/api/server.html +++ b/docs/html/_modules/pylorax/api/server.html @@ -8,7 +8,7 @@ - pylorax.api.server — Lorax 31.1 documentation + pylorax.api.server — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/timestamp.html b/docs/html/_modules/pylorax/api/timestamp.html index 86032c37..90a6df4b 100644 --- a/docs/html/_modules/pylorax/api/timestamp.html +++ b/docs/html/_modules/pylorax/api/timestamp.html @@ -8,7 +8,7 @@ - pylorax.api.timestamp — Lorax 31.1 documentation + pylorax.api.timestamp — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/v0.html b/docs/html/_modules/pylorax/api/v0.html index b3a8cb45..b0b384e3 100644 --- a/docs/html/_modules/pylorax/api/v0.html +++ b/docs/html/_modules/pylorax/api/v0.html @@ -8,7 +8,7 @@ - pylorax.api.v0 — Lorax 31.1 documentation + pylorax.api.v0 — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/api/workspace.html b/docs/html/_modules/pylorax/api/workspace.html index 07f6339a..1508e823 100644 --- a/docs/html/_modules/pylorax/api/workspace.html +++ b/docs/html/_modules/pylorax/api/workspace.html @@ -8,7 +8,7 @@ - pylorax.api.workspace — Lorax 31.1 documentation + pylorax.api.workspace — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/base.html b/docs/html/_modules/pylorax/base.html index 20821bfc..88da3aaf 100644 --- a/docs/html/_modules/pylorax/base.html +++ b/docs/html/_modules/pylorax/base.html @@ -8,7 +8,7 @@ - pylorax.base — Lorax 31.1 documentation + pylorax.base — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/buildstamp.html b/docs/html/_modules/pylorax/buildstamp.html index 04920b56..c8053596 100644 --- a/docs/html/_modules/pylorax/buildstamp.html +++ b/docs/html/_modules/pylorax/buildstamp.html @@ -8,7 +8,7 @@ - pylorax.buildstamp — Lorax 31.1 documentation + pylorax.buildstamp — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/cmdline.html b/docs/html/_modules/pylorax/cmdline.html index 023a6d7b..c820d244 100644 --- a/docs/html/_modules/pylorax/cmdline.html +++ b/docs/html/_modules/pylorax/cmdline.html @@ -8,7 +8,7 @@ - pylorax.cmdline — Lorax 31.1 documentation + pylorax.cmdline — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
@@ -306,6 +306,8 @@ help="Build an ami image") action.add_argument("--make-tar", action="store_true", help="Build a tar of the root filesystem") + action.add_argument("--make-tar-disk", action="store_true", + help="Build a tar of a partitioned disk image") action.add_argument("--make-pxe-live", action="store_true", help="Build a live pxe boot squashfs image") action.add_argument("--make-ostree-live", action="store_true", @@ -373,8 +375,12 @@ help="Path to existing filesystem image to use for creating final image.") image_group.add_argument("--image-name", default=None, help="Name of output file to create. Used for tar, fs and disk image. Default is a random name.") + image_group.add_argument("--tar-disk-name", default=None, + help="Name of the archive member for make-tar-disk.") image_group.add_argument("--fs-label", default="Anaconda", help="Label to set on fsimage, default is 'Anaconda'") + image_group.add_argument("--image-size-align", type=int, default=0, + help="Create a disk image with a size that is a multiple of this value in MiB.") image_group.add_argument("--image-type", default=None, help="Create an image with qemu-img. See qemu-img --help for supported formats.") image_group.add_argument("--qemu-arg", action="append", dest="qemu_args", default=[], diff --git a/docs/html/_modules/pylorax/creator.html b/docs/html/_modules/pylorax/creator.html index ac83c2d9..53723869 100644 --- a/docs/html/_modules/pylorax/creator.html +++ b/docs/html/_modules/pylorax/creator.html @@ -8,7 +8,7 @@ - pylorax.creator — Lorax 31.1 documentation + pylorax.creator — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
@@ -625,6 +625,9 @@ log.info("Adding 1024M for reqpart --addboot") disk_size += 1024 + if opts.image_size_align: + disk_size += opts.image_size_align - (disk_size % opts.image_size_align) + log.info("Using disk size of %sMiB", disk_size) return disk_size
@@ -642,28 +645,49 @@ Use qemu+boot.iso or anaconda to install to a disk image. """ - if opts.image_name: + + # For make_tar_disk, opts.image_name is the name of the final tarball. + # Use opts.tar_disk_name as the name of the disk image + if opts.make_tar_disk: + disk_img = joinpaths(opts.result_dir, opts.tar_disk_name) + elif opts.image_name: disk_img = joinpaths(opts.result_dir, opts.image_name) else: disk_img = tempfile.mktemp(prefix="lmc-disk-", suffix=".img", dir=opts.result_dir) log.info("disk_img = %s", disk_img) disk_size = calculate_disk_size(opts, ks) + + # For make_tar_disk, pass a second path parameter for the final tarball + # not the final output file. + if opts.make_tar_disk: + tar_img = joinpaths(opts.result_dir, opts.image_name) + else: + tar_img = None + try: if opts.no_virt: - novirt_install(opts, disk_img, disk_size, cancel_func=cancel_func) + novirt_install(opts, disk_img, disk_size, cancel_func=cancel_func, tar_img=tar_img) else: install_log = os.path.abspath(os.path.dirname(opts.logfile))+"/virt-install.log" log.info("install_log = %s", install_log) - virt_install(opts, install_log, disk_img, disk_size, cancel_func=cancel_func) + virt_install(opts, install_log, disk_img, disk_size, cancel_func=cancel_func, tar_img=tar_img) except InstallError as e: log.error("Install failed: %s", e) - if not opts.keep_image and os.path.exists(disk_img): - log.info("Removing bad disk image") - os.unlink(disk_img) + if not opts.keep_image: + if os.path.exists(disk_img): + log.info("Removing bad disk image") + os.unlink(disk_img) + if tar_img and os.path.exists(tar_img): + log.info("Removing bad tar file") + os.unlink(tar_img) raise log.info("Disk Image install successful") + + if opts.make_tar_disk: + return tar_img + return disk_img diff --git a/docs/html/_modules/pylorax/decorators.html b/docs/html/_modules/pylorax/decorators.html index 5273a253..585a636b 100644 --- a/docs/html/_modules/pylorax/decorators.html +++ b/docs/html/_modules/pylorax/decorators.html @@ -8,7 +8,7 @@ - pylorax.decorators — Lorax 31.1 documentation + pylorax.decorators — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/discinfo.html b/docs/html/_modules/pylorax/discinfo.html index 15c4e53b..eb0856a5 100644 --- a/docs/html/_modules/pylorax/discinfo.html +++ b/docs/html/_modules/pylorax/discinfo.html @@ -8,7 +8,7 @@ - pylorax.discinfo — Lorax 31.1 documentation + pylorax.discinfo — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/dnfbase.html b/docs/html/_modules/pylorax/dnfbase.html index a706fa51..7662369a 100644 --- a/docs/html/_modules/pylorax/dnfbase.html +++ b/docs/html/_modules/pylorax/dnfbase.html @@ -8,7 +8,7 @@ - pylorax.dnfbase — Lorax 31.1 documentation + pylorax.dnfbase — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/dnfhelper.html b/docs/html/_modules/pylorax/dnfhelper.html index 134ee210..3a30c527 100644 --- a/docs/html/_modules/pylorax/dnfhelper.html +++ b/docs/html/_modules/pylorax/dnfhelper.html @@ -8,7 +8,7 @@ - pylorax.dnfhelper — Lorax 31.1 documentation + pylorax.dnfhelper — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/executils.html b/docs/html/_modules/pylorax/executils.html index e3ec29a8..67b91a09 100644 --- a/docs/html/_modules/pylorax/executils.html +++ b/docs/html/_modules/pylorax/executils.html @@ -8,7 +8,7 @@ - pylorax.executils — Lorax 31.1 documentation + pylorax.executils — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/imgutils.html b/docs/html/_modules/pylorax/imgutils.html index 717fd68c..6f5cfbb3 100644 --- a/docs/html/_modules/pylorax/imgutils.html +++ b/docs/html/_modules/pylorax/imgutils.html @@ -8,7 +8,7 @@ - pylorax.imgutils — Lorax 31.1 documentation + pylorax.imgutils — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
@@ -194,8 +194,8 @@ ######## Functions for making container images (cpio, tar, squashfs) ########## -
[docs]def compress(command, rootdir, outfile, compression="xz", compressargs=None): - '''Make a compressed archive of the given rootdir. +
[docs]def compress(command, root, outfile, compression="xz", compressargs=None): + '''Make a compressed archive of the given rootdir or file. command is a list of the archiver commands to run compression should be "xz", "gzip", "lzma", "bzip2", or None. compressargs will be used on the compression commandline.''' @@ -218,12 +218,23 @@ compression = "pbzip2" compressargs.insert(0, "-p%d" % multiprocessing.cpu_count()) - logger.debug("find %s -print0 |%s | %s %s > %s", rootdir, " ".join(command), - compression, " ".join(compressargs), outfile) find, archive, comp = None, None, None + try: - find = Popen(["find", ".", "-print0"], stdout=PIPE, cwd=rootdir) - archive = Popen(command, stdin=find.stdout, stdout=PIPE, cwd=rootdir) + if os.path.isdir(root): + logger.debug("find %s -print0 |%s | %s %s > %s", root, " ".join(command), + compression, " ".join(compressargs), outfile) + + find = Popen(["find", ".", "-print0"], stdout=PIPE, cwd=root) + archive = Popen(command, stdin=find.stdout, stdout=PIPE, cwd=root) + else: + logger.debug("echo %s |%s | %s %s > %s", root, " ".join(command), + compression, " ".join(compressargs), outfile) + + archive = Popen(command, stdin=PIPE, stdout=PIPE, cwd=os.path.dirname(root)) + archive.stdin.write(os.path.basename(root).encode("utf-8") + b"\0") + archive.stdin.close() + comp = Popen([compression] + compressargs, stdin=archive.stdout, stdout=open(outfile, "wb")) comp.wait() @@ -234,18 +245,18 @@ list(p.kill() for p in (find, archive, comp) if p) return 1
-
[docs]def mkcpio(rootdir, outfile, compression="xz", compressargs=None): +
[docs]def mkcpio(root, outfile, compression="xz", compressargs=None): compressargs = compressargs or ["-9"] return compress(["cpio", "--null", "--quiet", "-H", "newc", "-o"], - rootdir, outfile, compression, compressargs)
+ root, outfile, compression, compressargs)
-
[docs]def mktar(rootdir, outfile, compression="xz", compressargs=None, selinux=True): +
[docs]def mktar(root, outfile, compression="xz", compressargs=None, selinux=True): compressargs = compressargs or ["-9"] tar_cmd = ["tar", "--no-recursion"] if selinux: tar_cmd += ["--selinux", "--acls", "--xattrs"] tar_cmd += ["-cf-", "--null", "-T-"] - return compress(tar_cmd, rootdir, outfile, compression, compressargs)
+ return compress(tar_cmd, root, outfile, compression, compressargs)
[docs]def mksquashfs(rootdir, outfile, compression="default", compressargs=None): '''Make a squashfs image containing the given rootdir.''' diff --git a/docs/html/_modules/pylorax/installer.html b/docs/html/_modules/pylorax/installer.html index f7434df4..561f6dea 100644 --- a/docs/html/_modules/pylorax/installer.html +++ b/docs/html/_modules/pylorax/installer.html @@ -8,7 +8,7 @@ - pylorax.installer — Lorax 31.1 documentation + pylorax.installer — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
@@ -481,7 +481,7 @@ return rc
-
[docs]def novirt_install(opts, disk_img, disk_size, cancel_func=None): +
[docs]def novirt_install(opts, disk_img, disk_size, cancel_func=None, tar_img=None): """ Use Anaconda to install to a disk image @@ -491,6 +491,7 @@ :param int disk_size: The size of the disk_img in MiB :param cancel_func: Function that returns True to cancel build :type cancel_func: function + :param str tar_img: For make_tar_disk, the path to final tarball to be created This method runs anaconda to create the image and then based on the opts passed creates a qemu disk image or tarfile. @@ -667,10 +668,22 @@ raise InstallError("novirt_install mktar failed: rc=%s" % rc) else: # For raw disk images, use fallocate to deallocate unused space - execWithRedirect("fallocate", ["--dig-holes", disk_img], raise_err=True)
+ execWithRedirect("fallocate", ["--dig-holes", disk_img], raise_err=True) + # For make_tar_disk, wrap the result in a tar file, and remove the original disk image. + if opts.make_tar_disk: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) -
[docs]def virt_install(opts, install_log, disk_img, disk_size, cancel_func=None): + rc = mktar(disk_img, tar_img, opts.compression, compress_args, selinux=False) + + if rc: + raise InstallError("novirt_install mktar failed: rc=%s" % rc) + + os.unlink(disk_img)
+ +
[docs]def virt_install(opts, install_log, disk_img, disk_size, cancel_func=None, tar_img=None): """ Use qemu to install to a disk image @@ -681,6 +694,7 @@ :param int disk_size: The size of the disk_img in MiB :param cancel_func: Function that returns True to cancel build :type cancel_func: function + :param str tar_img: For make_tar_disk, the path to final tarball to be created This uses qemu with a boot.iso and a kickstart to create a disk image and then optionally, based on the opts passed, creates tarfile. @@ -794,7 +808,20 @@ rc = mktar(vagrant_dir, disk_img, opts.compression, compress_args, selinux=False) if rc: raise InstallError("virt_install failed") - shutil.rmtree(vagrant_dir)
+ shutil.rmtree(vagrant_dir) + + # For make_tar_disk, wrap the result in a tar file, and remove the original disk image. + if opts.make_tar_disk: + compress_args = [] + for arg in opts.compress_args: + compress_args += arg.split(" ", 1) + + rc = mktar(disk_img, tar_img, opts.compression, compress_args, selinux=False) + + if rc: + raise InstallError("virt_install mktar failed: rc=%s" % rc) + + os.unlink(disk_img)
diff --git a/docs/html/_modules/pylorax/ltmpl.html b/docs/html/_modules/pylorax/ltmpl.html index 9b40333f..05188250 100644 --- a/docs/html/_modules/pylorax/ltmpl.html +++ b/docs/html/_modules/pylorax/ltmpl.html @@ -8,7 +8,7 @@ - pylorax.ltmpl — Lorax 31.1 documentation + pylorax.ltmpl — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/monitor.html b/docs/html/_modules/pylorax/monitor.html index 30614e78..c27e0cf4 100644 --- a/docs/html/_modules/pylorax/monitor.html +++ b/docs/html/_modules/pylorax/monitor.html @@ -8,7 +8,7 @@ - pylorax.monitor — Lorax 31.1 documentation + pylorax.monitor — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/mount.html b/docs/html/_modules/pylorax/mount.html index 1bcd8664..57763e68 100644 --- a/docs/html/_modules/pylorax/mount.html +++ b/docs/html/_modules/pylorax/mount.html @@ -8,7 +8,7 @@ - pylorax.mount — Lorax 31.1 documentation + pylorax.mount — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/sysutils.html b/docs/html/_modules/pylorax/sysutils.html index 827b6444..526ffb94 100644 --- a/docs/html/_modules/pylorax/sysutils.html +++ b/docs/html/_modules/pylorax/sysutils.html @@ -8,7 +8,7 @@ - pylorax.sysutils — Lorax 31.1 documentation + pylorax.sysutils — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/treebuilder.html b/docs/html/_modules/pylorax/treebuilder.html index f34b043a..1274548b 100644 --- a/docs/html/_modules/pylorax/treebuilder.html +++ b/docs/html/_modules/pylorax/treebuilder.html @@ -8,7 +8,7 @@ - pylorax.treebuilder — Lorax 31.1 documentation + pylorax.treebuilder — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_modules/pylorax/treeinfo.html b/docs/html/_modules/pylorax/treeinfo.html index 8570b25d..6fe28e93 100644 --- a/docs/html/_modules/pylorax/treeinfo.html +++ b/docs/html/_modules/pylorax/treeinfo.html @@ -8,7 +8,7 @@ - pylorax.treeinfo — Lorax 31.1 documentation + pylorax.treeinfo — Lorax 31.4 documentation @@ -58,7 +58,7 @@
- 31.1 + 31.4
diff --git a/docs/html/_sources/composer-cli.rst.txt b/docs/html/_sources/composer-cli.rst.txt index 6c1116fb..36cc92ec 100644 --- a/docs/html/_sources/composer-cli.rst.txt +++ b/docs/html/_sources/composer-cli.rst.txt @@ -40,8 +40,8 @@ compose start http-server qcow2``. It will print a UUID that you can use to keep track of the build. You can also cancel the build if needed. The available types of images is displayed by ``composer-cli compose types``. -Currently this consists of: ami, ext4-filesystem, live-iso, openstack, -partitioned-disk, qcow2, tar, vhd, vmdk +Currently this consists of: alibaba, ami, ext4-filesystem, google, hyper-v, +live-iso, openstack, partitioned-disk, qcow2, tar, vhd, vmdk Monitor the build status ------------------------ diff --git a/docs/html/_sources/lorax-composer.rst.txt b/docs/html/_sources/lorax-composer.rst.txt index a589adef..6e391942 100644 --- a/docs/html/_sources/lorax-composer.rst.txt +++ b/docs/html/_sources/lorax-composer.rst.txt @@ -175,11 +175,13 @@ for selecting optional packages. Customizations ~~~~~~~~~~~~~~ -The ``[[customizations]]`` section can be used to configure the hostname of the final image. eg.:: +The ``[customizations]`` section can be used to configure the hostname of the final image. eg.:: - [[customizations]] + [customizations] hostname = "baseimage" +This is optional and may be left out to use the defaults. + [customizations.kernel] *********************** @@ -244,6 +246,93 @@ Add a group to the image. ``name`` is required and ``gid`` is optional:: gid = 1130 +[customizations.timezone] +************************* + +Customizing the timezone and the NTP servers to use for the system:: + + [customizations.timezone] + timezone = "US/Eastern" + ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"] + +The values supported by ``timezone`` can be listed by running ``timedatectl list-timezones``. + +If no timezone is setup the system will default to using `UTC`. The ntp servers are also +optional and will default to using the distribution defaults which are fine for most uses. + +In some image types there are already NTP servers setup, eg. Google cloud image, and they +cannot be overridden because they are required to boot in the selected environment. But the +timezone will be updated to the one selected in the blueprint. + + +[customizations.locale] +*********************** + +Customize the locale settings for the system:: + + [customizations.locale] + languages = ["en_US.UTF-8"] + keyboard = "us" + +The values supported by ``languages`` can be listed by running ``localectl list-locales`` from +the command line. + +The values supported by ``keyboard`` can be listed by running ``localectl list-keymaps`` from +the command line. + +Multiple languages can be added. The first one becomes the +primary, and the others are added as secondary. One or the other of ``languages`` +or ``keyboard`` must be included (or both) in the section. + + +[customizations.firewall] +************************* + +By default the firewall blocks all access except for services that enable their ports explicitly, +like ``sshd``. This command can be used to open other ports or services. Ports are configured using +the port:protocol format:: + + [customizations.firewall] + ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp"] + +Numeric ports, or their names from ``/etc/services`` can be used in the ``ports`` enabled/disabled lists. + +The blueprint settings extend any existing settings in the image templates, so if ``sshd`` is +already enabled it will extend the list of ports with the ones listed by the blueprint. + +If the distribution uses ``firewalld`` you can specify services listed by ``firewall-cmd --get-services`` +in a ``customizations.firewall.services`` section:: + + [customizations.firewall.services] + enabled = ["ftp", "ntp", "dhcp"] + disabled = ["telnet"] + +Remember that the ``firewall.services`` are different from the names in ``/etc/services``. + +Both are optional, if they are not used leave them out or set them to an empty list ``[]``. If you +only want the default firewall setup this section can be omitted from the blueprint. + +NOTE: The ``Google`` and ``OpenStack`` templates explicitly disable the firewall for their environment. +This cannot be overridden by the blueprint. + +[customizations.services] +************************* + +This section can be used to control which services are enabled at boot time. +Some image types already have services enabled or disabled in order for the +image to work correctly, and cannot be overridden. eg. ``ami`` requires +``sshd``, ``chronyd``, and ``cloud-init``. Without them the image will not +boot. Blueprint services are added to, not replacing, the list already in the +templates, if any. + +The service names are systemd service units. You may specify any systemd unit +file accepted by ``systemctl enable`` eg. ``cockpit.socket``:: + + [customizations.services] + enabled = ["sshd", "cockpit.socket", "httpd"] + disabled = ["postfix", "telnetd"] + + [[repos.git]] ~~~~~~~~~~~~~ diff --git a/docs/html/_static/basic.css b/docs/html/_static/basic.css index 04f1bf55..53acd096 100644 --- a/docs/html/_static/basic.css +++ b/docs/html/_static/basic.css @@ -401,11 +401,13 @@ table.citation td { border-bottom: none; } +th > p:first-child, td > p:first-child { margin-top: 0px; } -td > p:only-child { +th > p:last-child, +td > p:last-child { margin-bottom: 0px; } @@ -482,7 +484,7 @@ li > p:first-child { margin-top: 0px; } -li > p:only-child { +li > p:last-child { margin-bottom: 0px; } diff --git a/docs/html/_static/documentation_options.js b/docs/html/_static/documentation_options.js index 5c4d0028..b919ed66 100644 --- a/docs/html/_static/documentation_options.js +++ b/docs/html/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '31.1', + VERSION: '31.4', LANGUAGE: 'None', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', diff --git a/docs/html/composer-cli.html b/docs/html/composer-cli.html index 7671e50e..367eea1e 100644 --- a/docs/html/composer-cli.html +++ b/docs/html/composer-cli.html @@ -8,7 +8,7 @@ - composer-cli — Lorax 31.1 documentation + composer-cli — Lorax 31.4 documentation @@ -60,7 +60,7 @@
- 31.1 + 31.4
@@ -315,8 +315,8 @@ saved by viewing the changelog - compose start http-server qcow2. It will print a UUID that you can use to keep track of the build. You can also cancel the build if needed.

The available types of images is displayed by composer-cli compose types. -Currently this consists of: ami, ext4-filesystem, live-iso, openstack, -partitioned-disk, qcow2, tar, vhd, vmdk

+Currently this consists of: alibaba, ami, ext4-filesystem, google, hyper-v, +live-iso, openstack, partitioned-disk, qcow2, tar, vhd, vmdk

Monitor the build status¶

diff --git a/docs/html/composer.cli.html b/docs/html/composer.cli.html index 729d1407..35f1ed83 100644 --- a/docs/html/composer.cli.html +++ b/docs/html/composer.cli.html @@ -8,7 +8,7 @@ - composer.cli package — Lorax 31.1 documentation + composer.cli package — Lorax 31.4 documentation @@ -60,7 +60,7 @@
- 31.1 + 31.4
diff --git a/docs/html/composer.html b/docs/html/composer.html index 9eb4174e..5c8b0c3e 100644 --- a/docs/html/composer.html +++ b/docs/html/composer.html @@ -8,7 +8,7 @@ - composer package — Lorax 31.1 documentation + composer package — Lorax 31.4 documentation @@ -60,7 +60,7 @@
- 31.1 + 31.4
diff --git a/docs/html/genindex.html b/docs/html/genindex.html index aecd2321..24593b68 100644 --- a/docs/html/genindex.html +++ b/docs/html/genindex.html @@ -9,7 +9,7 @@ - Index — Lorax 31.1 documentation + Index — Lorax 31.4 documentation @@ -59,7 +59,7 @@
- 31.1 + 31.4
@@ -513,6 +513,8 @@
  • finish() (pylorax.monitor.LogRequestHandler method)
  • finished() (pylorax.treebuilder.RuntimeBuilder method) +
  • +
  • firewall_cmd() (in module pylorax.api.compose)
  • freeze() (pylorax.api.recipes.Recipe method)
  • @@ -541,20 +543,28 @@
  • get_compose_type() (in module pylorax.api.queue)
  • get_default() (pylorax.api.config.ComposerConfig method) +
  • +
  • get_default_services() (in module pylorax.api.compose)
  • get_dnf_base_object() (in module pylorax.dnfbase)
  • get_extra_pkgs() (in module pylorax.api.compose)
  • get_filename() (in module composer.http_client) +
  • +
  • get_firewall_settings() (in module pylorax.api.compose)
  • get_image_name() (in module pylorax.api.queue)
  • get_iso_label() (pylorax.mount.IsoMountpoint method) +
  • +
  • get_kernel_append() (in module pylorax.api.compose)
  • @@ -672,6 +688,8 @@

    L

      +
    • lang_cmd() (in module pylorax.api.compose) +
    • lib64_arches (pylorax.ArchData attribute)
    • linktree() (in module pylorax.sysutils) @@ -1110,6 +1128,8 @@

      S

      • timestamp_dict() (in module pylorax.api.timestamp) +
      • +
      • timezone_cmd() (in module pylorax.api.compose)
      • toml() (pylorax.api.recipes.Recipe method)
      • diff --git a/docs/html/index.html b/docs/html/index.html index 7e783744..a1c6601d 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -8,7 +8,7 @@ - Welcome to Lorax's documentation! — Lorax 31.1 documentation + Welcome to Lorax's documentation! — Lorax 31.4 documentation @@ -59,7 +59,7 @@
        - 31.1 + 31.4
        diff --git a/docs/html/intro.html b/docs/html/intro.html index 491dd051..a0fb11ec 100644 --- a/docs/html/intro.html +++ b/docs/html/intro.html @@ -8,7 +8,7 @@ - Introduction to Lorax — Lorax 31.1 documentation + Introduction to Lorax — Lorax 31.4 documentation @@ -60,7 +60,7 @@
        - 31.1 + 31.4
        diff --git a/docs/html/livemedia-creator.html b/docs/html/livemedia-creator.html index 3cc2c083..e56a52f5 100644 --- a/docs/html/livemedia-creator.html +++ b/docs/html/livemedia-creator.html @@ -8,7 +8,7 @@ - livemedia-creator — Lorax 31.1 documentation + livemedia-creator — Lorax 31.4 documentation @@ -60,7 +60,7 @@
        - 31.1 + 31.4
        @@ -226,7 +226,7 @@ you have the anaconda-tui package installed.

        Create Live Install Media

        usage: livemedia-creator [-h]
        -                         (--make-iso | --make-disk | --make-fsimage | --make-appliance | --make-ami | --make-tar | --make-pxe-live | --make-ostree-live | --make-oci | --make-vagrant)
        +                         (--make-iso | --make-disk | --make-fsimage | --make-appliance | --make-ami | --make-tar | --make-tar-disk | --make-pxe-live | --make-ostree-live | --make-oci | --make-vagrant)
                                  [--iso ISO] [--iso-only] [--iso-name ISO_NAME]
                                  [--ks KS] [--image-only] [--no-virt] [--proxy PROXY]
                                  [--anaconda-arg ANACONDA_ARGS]
        @@ -237,9 +237,11 @@ you have the anaconda-tui package installed.

        [--extra-boot-args EXTRA_BOOT_ARGS] [--disk-image DISK_IMAGE] [--keep-image] [--fs-image FS_IMAGE] [--image-name IMAGE_NAME] - [--fs-label FS_LABEL] [--image-type IMAGE_TYPE] - [--qemu-arg QEMU_ARGS] [--qcow2] - [--qcow2-arg QEMU_ARGS] [--compression COMPRESSION] + [--tar-disk-name TAR_DISK_NAME] [--fs-label FS_LABEL] + [--image-size-align IMAGE_SIZE_ALIGN] + [--image-type IMAGE_TYPE] [--qemu-arg QEMU_ARGS] + [--qcow2] [--qcow2-arg QEMU_ARGS] + [--compression COMPRESSION] [--compress-arg COMPRESS_ARGS] [--app-name APP_NAME] [--app-template APP_TEMPLATE] [--app-file APP_FILE] [--ram MEMORY] [--vcpus VCPUS] [--vnc VNC] @@ -283,6 +285,10 @@ you have the anaconda-tui package installed.

        Build a tar of the root filesystem

        Default: False

        +
        --make-tar-disk
        +

        Build a tar of a partitioned disk image

        +

        Default: False

        +
        --make-pxe-live

        Build a live pxe boot squashfs image

        Default: False

        @@ -398,10 +404,17 @@ you have the anaconda-tui package installed.

        --image-name

        Name of output file to create. Used for tar, fs and disk image. Default is a random name.

        +
        --tar-disk-name
        +

        Name of the archive member for make-tar-disk.

        +
        --fs-label

        Label to set on fsimage, default is 'Anaconda'

        Default: "Anaconda"

        +
        --image-size-align
        +

        Create a disk image with a size that is a multiple of this value in MiB.

        +

        Default: 0

        +
        --image-type

        Create an image with qemu-img. See qemu-img --help for supported formats.

        diff --git a/docs/html/lorax-composer.html b/docs/html/lorax-composer.html index f721022d..5f57c03d 100644 --- a/docs/html/lorax-composer.html +++ b/docs/html/lorax-composer.html @@ -8,7 +8,7 @@ - lorax-composer — Lorax 31.1 documentation + lorax-composer — Lorax 31.4 documentation @@ -60,7 +60,7 @@
        - 31.1 + 31.4
        @@ -110,6 +110,10 @@
      • [[customizations.sshkey]]
      • [[customizations.user]]
      • [[customizations.group]]
      • +
      • [customizations.timezone]
      • +
      • [customizations.locale]
      • +
      • [customizations.firewall]
      • +
      • [customizations.services]
    • [[repos.git]]
    • @@ -409,11 +413,12 @@ for selecting optional packages.

      Customizations¶

      -

      The [[customizations]] section can be used to configure the hostname of the final image. eg.:

      -
      [[customizations]]
      +

      The [customizations] section can be used to configure the hostname of the final image. eg.:

      +
      [customizations]
       hostname = "baseimage"
       
      +

      This is optional and may be left out to use the defaults.

      [customizations.kernel]¶

      This allows you to append arguments to the bootloader's kernel commandline. This will not have any @@ -470,6 +475,78 @@ an encrypted password. Otherwise it will be treated as a plain text password.

      +
      +

      [customizations.timezone]¶

      +

      Customizing the timezone and the NTP servers to use for the system:

      +
      [customizations.timezone]
      +timezone = "US/Eastern"
      +ntpservers = ["0.north-america.pool.ntp.org", "1.north-america.pool.ntp.org"]
      +
      +
      +

      The values supported by timezone can be listed by running timedatectl list-timezones.

      +

      If no timezone is setup the system will default to using UTC. The ntp servers are also +optional and will default to using the distribution defaults which are fine for most uses.

      +

      In some image types there are already NTP servers setup, eg. Google cloud image, and they +cannot be overridden because they are required to boot in the selected environment. But the +timezone will be updated to the one selected in the blueprint.

      +
      +
      +

      [customizations.locale]¶

      +

      Customize the locale settings for the system:

      +
      [customizations.locale]
      +languages = ["en_US.UTF-8"]
      +keyboard = "us"
      +
      +
      +

      The values supported by languages can be listed by running localectl list-locales from +the command line.

      +

      The values supported by keyboard can be listed by running localectl list-keymaps from +the command line.

      +

      Multiple languages can be added. The first one becomes the +primary, and the others are added as secondary. One or the other of languages +or keyboard must be included (or both) in the section.

      +
      +
      +

      [customizations.firewall]¶

      +

      By default the firewall blocks all access except for services that enable their ports explicitly, +like sshd. This command can be used to open other ports or services. Ports are configured using +the port:protocol format:

      +
      [customizations.firewall]
      +ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp"]
      +
      +
      +

      Numeric ports, or their names from /etc/services can be used in the ports enabled/disabled lists.

      +

      The blueprint settings extend any existing settings in the image templates, so if sshd is +already enabled it will extend the list of ports with the ones listed by the blueprint.

      +

      If the distribution uses firewalld you can specify services listed by firewall-cmd --get-services +in a customizations.firewall.services section:

      +
      [customizations.firewall.services]
      +enabled = ["ftp", "ntp", "dhcp"]
      +disabled = ["telnet"]
      +
      +
      +

      Remember that the firewall.services are different from the names in /etc/services.

      +

      Both are optional, if they are not used leave them out or set them to an empty list []. If you +only want the default firewall setup this section can be omitted from the blueprint.

      +

      NOTE: The Google and OpenStack templates explicitly disable the firewall for their environment. +This cannot be overridden by the blueprint.

      +
      +
      +

      [customizations.services]¶

      +

      This section can be used to control which services are enabled at boot time. +Some image types already have services enabled or disabled in order for the +image to work correctly, and cannot be overridden. eg. ami requires +sshd, chronyd, and cloud-init. Without them the image will not +boot. Blueprint services are added to, not replacing, the list already in the +templates, if any.

      +

      The service names are systemd service units. You may specify any systemd unit +file accepted by systemctl enable eg. cockpit.socket:

      +
      [customizations.services]
      +enabled = ["sshd", "cockpit.socket", "httpd"]
      +disabled = ["postfix", "telnetd"]
      +
      +
      +

      [[repos.git]]¶

      diff --git a/docs/html/lorax.html b/docs/html/lorax.html index 52c3cb1e..c7339ffb 100644 --- a/docs/html/lorax.html +++ b/docs/html/lorax.html @@ -8,7 +8,7 @@ - Lorax — Lorax 31.1 documentation + Lorax — Lorax 31.4 documentation @@ -60,7 +60,7 @@
      - 31.1 + 31.4
      diff --git a/docs/html/modules.html b/docs/html/modules.html index 78812c62..bc49e209 100644 --- a/docs/html/modules.html +++ b/docs/html/modules.html @@ -8,7 +8,7 @@ - src — Lorax 31.1 documentation + src — Lorax 31.4 documentation @@ -60,7 +60,7 @@
      - 31.1 + 31.4
      diff --git a/docs/html/objects.inv b/docs/html/objects.inv index 967f8689..b2044d13 100644 Binary files a/docs/html/objects.inv and b/docs/html/objects.inv differ diff --git a/docs/html/product-images.html b/docs/html/product-images.html index 669e5b47..7243ef3a 100644 --- a/docs/html/product-images.html +++ b/docs/html/product-images.html @@ -8,7 +8,7 @@ - Product and Updates Images — Lorax 31.1 documentation + Product and Updates Images — Lorax 31.4 documentation @@ -60,7 +60,7 @@
      - 31.1 + 31.4
      diff --git a/docs/html/py-modindex.html b/docs/html/py-modindex.html index cfa72c08..d43cd4b5 100644 --- a/docs/html/py-modindex.html +++ b/docs/html/py-modindex.html @@ -8,7 +8,7 @@ - Python Module Index — Lorax 31.1 documentation + Python Module Index — Lorax 31.4 documentation @@ -61,7 +61,7 @@
      - 31.1 + 31.4
      diff --git a/docs/html/pylorax.api.html b/docs/html/pylorax.api.html index 39c4b486..b626891c 100644 --- a/docs/html/pylorax.api.html +++ b/docs/html/pylorax.api.html @@ -8,7 +8,7 @@ - pylorax.api package — Lorax 31.1 documentation + pylorax.api package — Lorax 31.4 documentation @@ -59,7 +59,7 @@
      - 31.1 + 31.4
      @@ -324,8 +324,45 @@ Other options will be filled in by make_compose()

      +

      Apply customizations to existing template commands, or add defaults for ones that are +missing and required.

      Apply customizations.kernel.append to the bootloader argument in the template. Add bootloader line if it is missing.

      +

      Add default timezone if needed. It does NOT replace an existing timezone entry

      + + +
      +
      +pylorax.api.compose.firewall_cmd(line, settings)[source]¶
      +

      Update the firewall line with the new ports and services

      +
      +
      Parameters
      +
        +
      • line (str) -- The firewall ... line

      • +
      • settings (dict) -- A dict with the list of services and ports to enable and disable

      • +
      +
      +
      +

      Using pykickstart to process the line is the best way to make sure it +is parsed correctly, and re-assembled for inclusion into the final kickstart

      +
      + +
      +
      +pylorax.api.compose.get_default_services(recipe)[source]¶
      +

      Get the default string for services, based on recipe +:param recipe: The recipe

      +
      +
      Returns
      +

      string with "services" or ""

      +
      +
      Return type
      +

      str

      +
      +
      +

      When no services have been selected we don't need to add anything to the kickstart +so return an empty string. Otherwise return "services" which will be updated with +the settings.

      @@ -354,6 +391,23 @@ iso using the templates such as x86.tmpl

      even though the results are applied differently.

      +
      +
      +pylorax.api.compose.get_firewall_settings(recipe)[source]¶
      +

      Return the customizations.firewall settings

      +
      +
      Parameters
      +

      recipe (Recipe object) -- The recipe

      +
      +
      Returns
      +

      A dict of settings

      +
      +
      Return type
      +

      dict

      +
      +
      +
      +
      pylorax.api.compose.get_kernel_append(recipe)[source]¶
      @@ -371,6 +425,106 @@ even though the results are applied differently.

      +
      +
      +pylorax.api.compose.get_keyboard_layout(recipe)[source]¶
      +

      Return the customizations.locale.keyboard list

      +
      +
      Parameters
      +

      recipe (Recipe object) -- The recipe

      +
      +
      Returns
      +

      The keyboard layout string

      +
      +
      Return type
      +

      str

      +
      +
      +
      + +
      +
      +pylorax.api.compose.get_languages(recipe)[source]¶
      +

      Return the customizations.locale.languages list

      +
      +
      Parameters
      +

      recipe (Recipe object) -- The recipe

      +
      +
      Returns
      +

      list of language strings

      +
      +
      Return type
      +

      list

      +
      +
      +
      + +
      +
      +pylorax.api.compose.get_services(recipe)[source]¶
      +

      Return the customizations.services settings

      +
      +
      Parameters
      +

      recipe (Recipe object) -- The recipe

      +
      +
      Returns
      +

      A dict of settings

      +
      +
      Return type
      +

      dict

      +
      +
      +
      + +
      +
      +pylorax.api.compose.get_timezone_settings(recipe)[source]¶
      +

      Return the customizations.timezone dict

      +
      +
      Parameters
      +

      recipe (Recipe object) --

      +
      +
      Returns
      +

      append value or empty string

      +
      +
      Return type
      +

      dict

      +
      +
      +
      + +
      +
      +pylorax.api.compose.keyboard_cmd(line, layout)[source]¶
      +

      Update the keyboard line with the layout

      +
      +
      Parameters
      +
        +
      • line (str) -- The keyboard ... line

      • +
      • settings (str) -- The keyboard layout

      • +
      +
      +
      +

      Using pykickstart to process the line is the best way to make sure it +is parsed correctly, and re-assembled for inclusion into the final kickstart

      +
      + +
      +
      +pylorax.api.compose.lang_cmd(line, languages)[source]¶
      +

      Update the lang line with the languages

      +
      +
      Parameters
      +
        +
      • line (str) -- The lang ... line

      • +
      • settings (list) -- The list of languages

      • +
      +
      +
      +

      Using pykickstart to process the line is the best way to make sure it +is parsed correctly, and re-assembled for inclusion into the final kickstart

      +
      +
      pylorax.api.compose.move_compose_results(cfg, results_dir)[source]¶
      @@ -398,6 +552,22 @@ even though the results are applied differently.

      Set url to "baseurl" if it is a repo, leave it as "url" for the installation url.

      +
      +
      +pylorax.api.compose.services_cmd(line, settings)[source]¶
      +

      Update the services line with additional services to enable/disable

      +
      +
      Parameters
      +
        +
      • line (str) -- The services ... line

      • +
      • settings (dict) -- A dict with the list of services to enable and disable

      • +
      +
      +
      +

      Using pykickstart to process the line is the best way to make sure it +is parsed correctly, and re-assembled for inclusion into the final kickstart

      +
      +
      pylorax.api.compose.start_build(cfg, dnflock, gitlock, branch, recipe_name, compose_type, test_mode=0)[source]¶
      @@ -438,6 +608,22 @@ even though the results are applied differently.

      Return a list of templates and errors encountered or an empty list

      +
      +
      +pylorax.api.compose.timezone_cmd(line, settings)[source]¶
      +

      Update the timezone line with the settings

      +
      +
      Parameters
      +
        +
      • line (str) -- The timezone ... line

      • +
      • settings (dict) -- A dict with timezone and/or ntpservers list

      • +
      +
      +
      +

      Using pykickstart to process the line is the best way to make sure it +is parsed correctly, and re-assembled for inclusion into the final kickstart

      +
      +
      pylorax.api.compose.write_ks_group(f, group)[source]¶
      diff --git a/docs/html/pylorax.html b/docs/html/pylorax.html index df215a07..bee594ff 100644 --- a/docs/html/pylorax.html +++ b/docs/html/pylorax.html @@ -8,7 +8,7 @@ - pylorax package — Lorax 31.1 documentation + pylorax package — Lorax 31.4 documentation @@ -60,7 +60,7 @@
      - 31.1 + 31.4
      @@ -943,8 +943,8 @@ last.

      -pylorax.imgutils.compress(command, rootdir, outfile, compression='xz', compressargs=None)[source]¶
      -

      Make a compressed archive of the given rootdir. +pylorax.imgutils.compress(command, root, outfile, compression='xz', compressargs=None)[source]¶ +

      Make a compressed archive of the given rootdir or file. command is a list of the archiver commands to run compression should be "xz", "gzip", "lzma", "bzip2", or None. compressargs will be used on the compression commandline.

      @@ -1061,7 +1061,7 @@ loop device really is associated with the backing file before continuing.

      -pylorax.imgutils.mkcpio(rootdir, outfile, compression='xz', compressargs=None)[source]¶
      +pylorax.imgutils.mkcpio(root, outfile, compression='xz', compressargs=None)[source]¶
      @@ -1156,7 +1156,7 @@ in options.

      -pylorax.imgutils.mktar(rootdir, outfile, compression='xz', compressargs=None, selinux=True)[source]¶
      +pylorax.imgutils.mktar(root, outfile, compression='xz', compressargs=None, selinux=True)[source]¶
      @@ -1303,7 +1303,7 @@ When an error is detected the process is terminated and this returns True

      -pylorax.installer.novirt_install(opts, disk_img, disk_size, cancel_func=None)[source]¶
      +pylorax.installer.novirt_install(opts, disk_img, disk_size, cancel_func=None, tar_img=None)[source]¶

      Use Anaconda to install to a disk image

      Parameters
      @@ -1312,6 +1312,7 @@ When an error is detected the process is terminated and this returns True

    • disk_img (str) -- The full path to the disk image to be created

    • disk_size (int) -- The size of the disk_img in MiB

    • cancel_func (function) -- Function that returns True to cancel build

    • +
    • tar_img (str) -- For make_tar_disk, the path to final tarball to be created

    • @@ -1337,7 +1338,7 @@ metadata file are set correctly. All other values are left untouched.

      -pylorax.installer.virt_install(opts, install_log, disk_img, disk_size, cancel_func=None)[source]¶
      +pylorax.installer.virt_install(opts, install_log, disk_img, disk_size, cancel_func=None, tar_img=None)[source]¶

      Use qemu to install to a disk image

      Parameters
      @@ -1347,6 +1348,7 @@ metadata file are set correctly. All other values are left untouched.

    • disk_img (str) -- The full path to the disk image to be created

    • disk_size (int) -- The size of the disk_img in MiB

    • cancel_func (function) -- Function that returns True to cancel build

    • +
    • tar_img (str) -- For make_tar_disk, the path to final tarball to be created

    • diff --git a/docs/html/search.html b/docs/html/search.html index 33963939..449ee2b7 100644 --- a/docs/html/search.html +++ b/docs/html/search.html @@ -8,7 +8,7 @@ - Search — Lorax 31.1 documentation + Search — Lorax 31.4 documentation @@ -59,7 +59,7 @@
      - 31.1 + 31.4
      diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js index a3d8438d..56da47a4 100644 --- a/docs/html/searchindex.js +++ b/docs/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["composer","composer-cli","composer.cli","index","intro","livemedia-creator","lorax","lorax-composer","modules","product-images","pylorax","pylorax.api"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["composer.rst","composer-cli.rst","composer.cli.rst","index.rst","intro.rst","livemedia-creator.rst","lorax.rst","lorax-composer.rst","modules.rst","product-images.rst","pylorax.rst","pylorax.api.rst"],objects:{"":{composer:[0,0,0,"-"],pylorax:[10,0,0,"-"]},"composer.cli":{blueprints:[2,0,0,"-"],cmdline:[2,0,0,"-"],compose:[2,0,0,"-"],help:[2,0,0,"-"],main:[2,1,1,""],modules:[2,0,0,"-"],projects:[2,0,0,"-"],sources:[2,0,0,"-"],status:[2,0,0,"-"],utilities:[2,0,0,"-"]},"composer.cli.blueprints":{blueprints_changes:[2,1,1,""],blueprints_cmd:[2,1,1,""],blueprints_delete:[2,1,1,""],blueprints_depsolve:[2,1,1,""],blueprints_diff:[2,1,1,""],blueprints_freeze:[2,1,1,""],blueprints_freeze_save:[2,1,1,""],blueprints_freeze_show:[2,1,1,""],blueprints_list:[2,1,1,""],blueprints_push:[2,1,1,""],blueprints_save:[2,1,1,""],blueprints_show:[2,1,1,""],blueprints_tag:[2,1,1,""],blueprints_undo:[2,1,1,""],blueprints_workspace:[2,1,1,""],prettyCommitDetails:[2,1,1,""],prettyDiffEntry:[2,1,1,""]},"composer.cli.cmdline":{composer_cli_parser:[2,1,1,""]},"composer.cli.compose":{compose_cancel:[2,1,1,""],compose_cmd:[2,1,1,""],compose_delete:[2,1,1,""],compose_image:[2,1,1,""],compose_info:[2,1,1,""],compose_list:[2,1,1,""],compose_log:[2,1,1,""],compose_logs:[2,1,1,""],compose_metadata:[2,1,1,""],compose_results:[2,1,1,""],compose_start:[2,1,1,""],compose_status:[2,1,1,""],compose_types:[2,1,1,""]},"composer.cli.modules":{modules_cmd:[2,1,1,""]},"composer.cli.projects":{projects_cmd:[2,1,1,""],projects_info:[2,1,1,""],projects_list:[2,1,1,""]},"composer.cli.sources":{sources_add:[2,1,1,""],sources_cmd:[2,1,1,""],sources_delete:[2,1,1,""],sources_info:[2,1,1,""],sources_list:[2,1,1,""]},"composer.cli.status":{status_cmd:[2,1,1,""]},"composer.cli.utilities":{argify:[2,1,1,""],frozen_toml_filename:[2,1,1,""],handle_api_result:[2,1,1,""],packageNEVRA:[2,1,1,""],toml_filename:[2,1,1,""]},"composer.http_client":{api_url:[0,1,1,""],append_query:[0,1,1,""],delete_url_json:[0,1,1,""],download_file:[0,1,1,""],get_filename:[0,1,1,""],get_url_json:[0,1,1,""],get_url_json_unlimited:[0,1,1,""],get_url_raw:[0,1,1,""],post_url:[0,1,1,""],post_url_json:[0,1,1,""],post_url_toml:[0,1,1,""]},"composer.unix_socket":{UnixHTTPConnection:[0,2,1,""],UnixHTTPConnectionPool:[0,2,1,""]},"composer.unix_socket.UnixHTTPConnection":{connect:[0,3,1,""]},"pylorax.ArchData":{bcj_arch:[10,4,1,""],lib64_arches:[10,4,1,""]},"pylorax.Lorax":{configure:[10,3,1,""],init_file_logging:[10,3,1,""],init_stream_logging:[10,3,1,""],run:[10,3,1,""],templatedir:[10,4,1,""]},"pylorax.api":{bisect:[11,0,0,"-"],checkparams:[11,0,0,"-"],cmdline:[11,0,0,"-"],compose:[11,0,0,"-"],config:[11,0,0,"-"],crossdomain:[11,0,0,"-"],dnfbase:[11,0,0,"-"],errors:[11,0,0,"-"],gitrpm:[11,0,0,"-"],projects:[11,0,0,"-"],queue:[11,0,0,"-"],recipes:[11,0,0,"-"],regexes:[11,0,0,"-"],server:[11,0,0,"-"],timestamp:[11,0,0,"-"],v0:[11,0,0,"-"],workspace:[11,0,0,"-"]},"pylorax.api.bisect":{insort_left:[11,1,1,""]},"pylorax.api.checkparams":{checkparams:[11,1,1,""]},"pylorax.api.cmdline":{lorax_composer_parser:[11,1,1,""]},"pylorax.api.compose":{add_customizations:[11,1,1,""],bootloader_append:[11,1,1,""],compose_args:[11,1,1,""],compose_types:[11,1,1,""],customize_ks_template:[11,1,1,""],get_extra_pkgs:[11,1,1,""],get_kernel_append:[11,1,1,""],move_compose_results:[11,1,1,""],repo_to_ks:[11,1,1,""],start_build:[11,1,1,""],test_templates:[11,1,1,""],write_ks_group:[11,1,1,""],write_ks_root:[11,1,1,""],write_ks_user:[11,1,1,""]},"pylorax.api.config":{ComposerConfig:[11,2,1,""],configure:[11,1,1,""],make_dnf_dirs:[11,1,1,""],make_owned_dir:[11,1,1,""],make_queue_dirs:[11,1,1,""]},"pylorax.api.config.ComposerConfig":{get_default:[11,3,1,""]},"pylorax.api.crossdomain":{crossdomain:[11,1,1,""]},"pylorax.api.dnfbase":{DNFLock:[11,2,1,""],get_base_object:[11,1,1,""]},"pylorax.api.dnfbase.DNFLock":{lock:[11,4,1,""],lock_check:[11,4,1,""]},"pylorax.api.gitrpm":{GitArchiveTarball:[11,2,1,""],GitRpmBuild:[11,2,1,""],create_gitrpm_repo:[11,1,1,""],get_repo_description:[11,1,1,""],make_git_rpm:[11,1,1,""]},"pylorax.api.gitrpm.GitArchiveTarball":{write_file:[11,3,1,""]},"pylorax.api.gitrpm.GitRpmBuild":{add_git_tarball:[11,3,1,""],check:[11,3,1,""],clean:[11,3,1,""],cleanup_tmpdir:[11,3,1,""],get_base_dir:[11,3,1,""]},"pylorax.api.projects":{ProjectsError:[11,5,1,""],api_changelog:[11,1,1,""],api_time:[11,1,1,""],delete_repo_source:[11,1,1,""],dep_evra:[11,1,1,""],dep_nevra:[11,1,1,""],dnf_repo_to_file_repo:[11,1,1,""],estimate_size:[11,1,1,""],get_repo_sources:[11,1,1,""],get_source_ids:[11,1,1,""],modules_info:[11,1,1,""],modules_list:[11,1,1,""],pkg_to_build:[11,1,1,""],pkg_to_dep:[11,1,1,""],pkg_to_project:[11,1,1,""],pkg_to_project_info:[11,1,1,""],proj_to_module:[11,1,1,""],projects_depsolve:[11,1,1,""],projects_depsolve_with_size:[11,1,1,""],projects_info:[11,1,1,""],projects_list:[11,1,1,""],repo_to_source:[11,1,1,""],source_to_repo:[11,1,1,""]},"pylorax.api.queue":{build_status:[11,1,1,""],check_queues:[11,1,1,""],compose_detail:[11,1,1,""],get_compose_type:[11,1,1,""],get_image_name:[11,1,1,""],make_compose:[11,1,1,""],monitor:[11,1,1,""],queue_status:[11,1,1,""],start_queue_monitor:[11,1,1,""],uuid_cancel:[11,1,1,""],uuid_delete:[11,1,1,""],uuid_image:[11,1,1,""],uuid_info:[11,1,1,""],uuid_log:[11,1,1,""],uuid_status:[11,1,1,""],uuid_tar:[11,1,1,""]},"pylorax.api.recipes":{CommitDetails:[11,2,1,""],CommitTimeValError:[11,5,1,""],NewRecipeGit:[11,1,1,""],Recipe:[11,2,1,""],RecipeError:[11,5,1,""],RecipeFileError:[11,5,1,""],RecipeGit:[11,2,1,""],RecipeGroup:[11,2,1,""],RecipeModule:[11,2,1,""],RecipePackage:[11,2,1,""],commit_recipe:[11,1,1,""],commit_recipe_directory:[11,1,1,""],commit_recipe_file:[11,1,1,""],delete_file:[11,1,1,""],delete_recipe:[11,1,1,""],diff_items:[11,1,1,""],find_commit_tag:[11,1,1,""],find_name:[11,1,1,""],get_commit_details:[11,1,1,""],get_revision_from_tag:[11,1,1,""],gfile:[11,1,1,""],head_commit:[11,1,1,""],is_commit_tag:[11,1,1,""],is_parent_diff:[11,1,1,""],list_branch_files:[11,1,1,""],list_commit_files:[11,1,1,""],list_commits:[11,1,1,""],open_or_create_repo:[11,1,1,""],prepare_commit:[11,1,1,""],read_commit:[11,1,1,""],read_commit_spec:[11,1,1,""],read_recipe_and_id:[11,1,1,""],read_recipe_commit:[11,1,1,""],recipe_diff:[11,1,1,""],recipe_filename:[11,1,1,""],recipe_from_dict:[11,1,1,""],recipe_from_file:[11,1,1,""],recipe_from_toml:[11,1,1,""],repo_file_exists:[11,1,1,""],revert_file:[11,1,1,""],revert_recipe:[11,1,1,""],tag_file_commit:[11,1,1,""],tag_recipe_commit:[11,1,1,""],write_commit:[11,1,1,""]},"pylorax.api.recipes.Recipe":{bump_version:[11,3,1,""],filename:[11,4,1,""],freeze:[11,3,1,""],group_names:[11,4,1,""],module_names:[11,4,1,""],module_nver:[11,4,1,""],package_names:[11,4,1,""],package_nver:[11,4,1,""],toml:[11,3,1,""]},"pylorax.api.server":{GitLock:[11,2,1,""]},"pylorax.api.server.GitLock":{dir:[11,4,1,""],lock:[11,4,1,""],repo:[11,4,1,""]},"pylorax.api.timestamp":{timestamp_dict:[11,1,1,""],write_timestamp:[11,1,1,""]},"pylorax.api.v0":{blueprint_exists:[11,1,1,""],take_limits:[11,1,1,""],v0_api:[11,1,1,""]},"pylorax.api.workspace":{workspace_delete:[11,1,1,""],workspace_dir:[11,1,1,""],workspace_read:[11,1,1,""],workspace_write:[11,1,1,""]},"pylorax.base":{BaseLoraxClass:[10,2,1,""],DataHolder:[10,2,1,""]},"pylorax.base.BaseLoraxClass":{pcritical:[10,3,1,""],pdebug:[10,3,1,""],perror:[10,3,1,""],pinfo:[10,3,1,""],pwarning:[10,3,1,""]},"pylorax.base.DataHolder":{copy:[10,3,1,""]},"pylorax.buildstamp":{BuildStamp:[10,2,1,""]},"pylorax.buildstamp.BuildStamp":{write:[10,3,1,""]},"pylorax.cmdline":{lmc_parser:[10,1,1,""],lorax_parser:[10,1,1,""]},"pylorax.creator":{FakeDNF:[10,2,1,""],calculate_disk_size:[10,1,1,""],check_kickstart:[10,1,1,""],create_pxe_config:[10,1,1,""],find_ostree_root:[10,1,1,""],get_arch:[10,1,1,""],is_image_mounted:[10,1,1,""],make_appliance:[10,1,1,""],make_image:[10,1,1,""],make_live_images:[10,1,1,""],make_livecd:[10,1,1,""],make_runtime:[10,1,1,""],make_squashfs:[10,1,1,""],mount_boot_part_over_root:[10,1,1,""],rebuild_initrds_for_live:[10,1,1,""],run_creator:[10,1,1,""],squashfs_args:[10,1,1,""]},"pylorax.creator.FakeDNF":{reset:[10,3,1,""]},"pylorax.decorators":{singleton:[10,1,1,""]},"pylorax.discinfo":{DiscInfo:[10,2,1,""]},"pylorax.discinfo.DiscInfo":{write:[10,3,1,""]},"pylorax.dnfbase":{get_dnf_base_object:[10,1,1,""]},"pylorax.dnfhelper":{LoraxDownloadCallback:[10,2,1,""],LoraxRpmCallback:[10,2,1,""]},"pylorax.dnfhelper.LoraxDownloadCallback":{end:[10,3,1,""],progress:[10,3,1,""],start:[10,3,1,""]},"pylorax.dnfhelper.LoraxRpmCallback":{error:[10,3,1,""],progress:[10,3,1,""]},"pylorax.executils":{ExecProduct:[10,2,1,""],augmentEnv:[10,1,1,""],execReadlines:[10,1,1,""],execWithCapture:[10,1,1,""],execWithRedirect:[10,1,1,""],runcmd:[10,1,1,""],runcmd_output:[10,1,1,""],setenv:[10,1,1,""],startProgram:[10,1,1,""]},"pylorax.imgutils":{DMDev:[10,2,1,""],LoopDev:[10,2,1,""],Mount:[10,2,1,""],PartitionMount:[10,2,1,""],compress:[10,1,1,""],copytree:[10,1,1,""],default_image_name:[10,1,1,""],dm_attach:[10,1,1,""],dm_detach:[10,1,1,""],do_grafts:[10,1,1,""],estimate_size:[10,1,1,""],get_loop_name:[10,1,1,""],kpartx_disk_img:[10,1,1,""],loop_attach:[10,1,1,""],loop_detach:[10,1,1,""],loop_waitfor:[10,1,1,""],mkbtrfsimg:[10,1,1,""],mkcpio:[10,1,1,""],mkdosimg:[10,1,1,""],mkext4img:[10,1,1,""],mkfsimage:[10,1,1,""],mkfsimage_from_disk:[10,1,1,""],mkhfsimg:[10,1,1,""],mkqcow2:[10,1,1,""],mkqemu_img:[10,1,1,""],mkrootfsimg:[10,1,1,""],mksparse:[10,1,1,""],mksquashfs:[10,1,1,""],mktar:[10,1,1,""],mount:[10,1,1,""],round_to_blocks:[10,1,1,""],umount:[10,1,1,""]},"pylorax.installer":{InstallError:[10,5,1,""],QEMUInstall:[10,2,1,""],anaconda_cleanup:[10,1,1,""],append_initrd:[10,1,1,""],create_vagrant_metadata:[10,1,1,""],find_free_port:[10,1,1,""],novirt_cancel_check:[10,1,1,""],novirt_install:[10,1,1,""],update_vagrant_metadata:[10,1,1,""],virt_install:[10,1,1,""]},"pylorax.installer.QEMUInstall":{QEMU_CMDS:[10,4,1,""]},"pylorax.ltmpl":{LiveTemplateRunner:[10,2,1,""],LoraxTemplate:[10,2,1,""],LoraxTemplateRunner:[10,2,1,""],TemplateRunner:[10,2,1,""],brace_expand:[10,1,1,""],rexists:[10,1,1,""],rglob:[10,1,1,""],split_and_expand:[10,1,1,""]},"pylorax.ltmpl.LiveTemplateRunner":{installpkg:[10,3,1,""]},"pylorax.ltmpl.LoraxTemplate":{parse:[10,3,1,""]},"pylorax.ltmpl.LoraxTemplateRunner":{append:[10,3,1,""],chmod:[10,3,1,""],copy:[10,3,1,""],createaddrsize:[10,3,1,""],hardlink:[10,3,1,""],install:[10,3,1,""],installimg:[10,3,1,""],installinitrd:[10,3,1,""],installkernel:[10,3,1,""],installpkg:[10,3,1,""],installupgradeinitrd:[10,3,1,""],log:[10,3,1,""],mkdir:[10,3,1,""],move:[10,3,1,""],remove:[10,3,1,""],removefrom:[10,3,1,""],removekmod:[10,3,1,""],removepkg:[10,3,1,""],replace:[10,3,1,""],run_pkg_transaction:[10,3,1,""],runcmd:[10,3,1,""],symlink:[10,3,1,""],systemctl:[10,3,1,""],treeinfo:[10,3,1,""]},"pylorax.ltmpl.TemplateRunner":{run:[10,3,1,""]},"pylorax.monitor":{LogMonitor:[10,2,1,""],LogRequestHandler:[10,2,1,""],LogServer:[10,2,1,""]},"pylorax.monitor.LogMonitor":{shutdown:[10,3,1,""]},"pylorax.monitor.LogRequestHandler":{finish:[10,3,1,""],handle:[10,3,1,""],iserror:[10,3,1,""],re_tests:[10,4,1,""],setup:[10,3,1,""],simple_tests:[10,4,1,""]},"pylorax.monitor.LogServer":{log_check:[10,3,1,""],timeout:[10,4,1,""]},"pylorax.mount":{IsoMountpoint:[10,2,1,""]},"pylorax.mount.IsoMountpoint":{get_iso_label:[10,3,1,""],umount:[10,3,1,""]},"pylorax.sysutils":{chmod_:[10,1,1,""],chown_:[10,1,1,""],joinpaths:[10,1,1,""],linktree:[10,1,1,""],remove:[10,1,1,""],replace:[10,1,1,""],touch:[10,1,1,""]},"pylorax.treebuilder":{RuntimeBuilder:[10,2,1,""],TreeBuilder:[10,2,1,""],findkernels:[10,1,1,""],generate_module_info:[10,1,1,""],string_lower:[10,1,1,""],udev_escape:[10,1,1,""]},"pylorax.treebuilder.RuntimeBuilder":{cleanup:[10,3,1,""],create_ext4_runtime:[10,3,1,""],create_squashfs_runtime:[10,3,1,""],finished:[10,3,1,""],generate_module_data:[10,3,1,""],install:[10,3,1,""],postinstall:[10,3,1,""],verify:[10,3,1,""],writepkglists:[10,3,1,""],writepkgsizes:[10,3,1,""]},"pylorax.treebuilder.TreeBuilder":{build:[10,3,1,""],copy_dracut_hooks:[10,3,1,""],dracut_hooks_path:[10,4,1,""],implantisomd5:[10,3,1,""],kernels:[10,4,1,""],rebuild_initrds:[10,3,1,""]},"pylorax.treeinfo":{TreeInfo:[10,2,1,""]},"pylorax.treeinfo.TreeInfo":{add_section:[10,3,1,""],write:[10,3,1,""]},composer:{cli:[2,0,0,"-"],http_client:[0,0,0,"-"],unix_socket:[0,0,0,"-"]},pylorax:{ArchData:[10,2,1,""],Lorax:[10,2,1,""],api:[11,0,0,"-"],base:[10,0,0,"-"],buildstamp:[10,0,0,"-"],cmdline:[10,0,0,"-"],creator:[10,0,0,"-"],decorators:[10,0,0,"-"],discinfo:[10,0,0,"-"],dnfbase:[10,0,0,"-"],dnfhelper:[10,0,0,"-"],executils:[10,0,0,"-"],find_templates:[10,1,1,""],get_buildarch:[10,1,1,""],imgutils:[10,0,0,"-"],installer:[10,0,0,"-"],log_selinux_state:[10,1,1,""],ltmpl:[10,0,0,"-"],monitor:[10,0,0,"-"],mount:[10,0,0,"-"],output:[10,0,0,"-"],setup_logging:[10,1,1,""],sysutils:[10,0,0,"-"],treebuilder:[10,0,0,"-"],treeinfo:[10,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"],"5":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method","4":"py:attribute","5":"py:exception"},terms:{"01t08":11,"03374adbf080fe34f5c6c29f2e49cc2b86958bf2":11,"03397f8d":11,"06e8":11,"08t00":11,"0ad":11,"0e08ecbb708675bfabc82952599a1712a843779d":11,"0instal":11,"10t23":11,"11t00":11,"11t01":11,"13z":11,"1kb":2,"1mbyte":11,"23t00":11,"28z":11,"29b492f26ed35d80800b536623bafc51e2f0eff2":11,"2b4174b3614b":11,"2ping":11,"30z":11,"3700mib":10,"3726a1093fd0":11,"397f":11,"3e11eb87a63d289662cba4b1804a0947a6843379":11,"3rn8evie2t50lmvybyihtgvrhcaecmeck31l":7,"41ef9c3e4b73":11,"44c0":11,"45502a6d":11,"45e380f39894":11,"47z":11,"48a5":11,"4a23":11,"4af9":11,"4b70":11,"4b8a":11,"4c68":11,"4c9f":11,"4cdb":11,"523b":11,"52z":11,"56z":11,"61b799739ce8":11,"6d292bd0":11,"7078e521a54b12eae31c3fd028680da7a0815a4d":11,"70b84195":11,"745712b2":11,"7f16":11,"870f":11,"8c8435ef":11,"8d7d":11,"96db":11,"99anaconda":10,"9bf1":11,"9c81":11,"byte":11,"case":[7,11],"catch":[5,10],"char":10,"class":[0,9,10,11],"default":[1,5,6,7,10,11],"final":[1,4,5,6,7,9,11],"function":[2,7,10,11],"import":[5,10],"int":[2,10,11],"new":[0,1,2,4,5,6,7,10],"null":[5,11],"public":[5,7],"return":[0,1,2,7,10,11],"short":7,"switch":5,"true":[0,2,5,6,7,10,11],"try":[5,10,11],"var":[5,6,7,10],"while":[7,9,10,11],ADDING:10,Adding:10,And:[5,7],But:5,For:[0,5,7,10],Its:[4,6],Not:10,One:[5,7],RTS:11,The:[0,1,2,4,5,7,9,10,11],There:[5,7,10,11],These:[7,9,11],Use:[5,6,10,11],Used:[5,10],Uses:11,Using:11,Will:10,Yes:10,__init__:0,_io:10,_map:7,a215:11,a2ef832e6b1a:11,a697ca405cdf:11,aarch64:[6,9,10],abbrevi:5,abl:[6,7],abort:5,about:[1,2,5,11],abov:5,absolut:10,access:[5,7,11],accomplish:5,account:[7,10],acff:11,acl:[10,11],action:10,activ:[5,7],actual:[10,11],ad52:11,add2636e7459:11,add:[0,1,2,5,6,9,10,11],add_arch_templ:[6,10],add_arch_template_var:[6,10],add_arg:10,add_custom:11,add_git_tarbal:11,add_sect:10,add_templ:[6,10],add_template_var:[6,10],added:[5,7,10,11],adding:[7,10],addit:[2,5,6,7,10],addon:11,addr:10,addrsiz:10,admin:7,administr:7,ae1bf7e3:11,af92:11,afford:5,after:[5,6,10,11],against:5,alia:11,all:[0,1,2,4,5,6,7,9,10,11],allbut:[6,10],alloc:5,allow:[5,6,7],allow_no_valu:11,almost:4,along:[6,11],alreadi:[7,10,11],also:[1,5,6,7,10,11],alwai:[5,7,11],amazon:5,ami:1,amount:7,anaconda:[1,4,6,7,9,10,11],anaconda_arg:[5,11],anaconda_cleanup:10,anaconfigurationthread:11,ancient:11,ani:[0,1,2,5,7,10,11],anoth:[5,6,10],anyth:[9,11],anywher:10,api:[0,1,2,7,8,10],api_changelog:11,api_tim:11,api_url:0,api_vers:[0,2],apiv:1,app:5,app_fil:5,app_nam:5,app_templ:5,appear:10,append:[0,2,5,6,7,10,11],append_initrd:10,append_queri:0,appli:[1,10,11],applianc:10,applic:[7,11],appropri:[5,10],arbitrari:[6,7],arch:[2,4,5,6,10,11],archdata:10,architectur:[4,5,6,10],archiv:[7,9,10,11],aren:[6,11],arg:[1,2,5,6,10,11],argifi:2,argpars:[2,10],argument:[0,2,10,11],argumentpars:[2,10,11],argv:10,arm:[5,10],armhfp:10,armplatform:[5,11],around:5,artifact:[5,11],assembl:11,associ:10,assum:[10,11],atla:11,attach:10,attach_to_al:11,attempt:[4,10,11],attribut:[5,11],audit:11,augmentenv:10,authent:11,author:[1,5,6,7,11],authorized_kei:7,automat:[7,10],automatic_opt:11,avahi:11,avail:[1,2,5,7,11],awar:7,b36e:11,back:[1,10],backup:[10,11],bare:[5,11],base:[0,5,6,7,8,11],basearch:10,baseimag:7,baseloraxclass:10,basenam:10,baserequesthandl:10,basesystem:11,baseurl:[5,7,11],bash:[4,5,7,11],basic:[1,6],bcj_arch:10,bcl:[1,5,6,7],bd31:11,bdc:7,bec7:11,becaus:[5,6,7,11],becom:5,been:[5,10,11],befor:[3,5,6,7,10],behind:[7,10],being:[5,6,7,11],below:[5,6,11],best:[5,6,7,11],better:10,between:[1,2,7,10,11],big:10,bin:[5,7,10],binari:[5,10],binary_output:10,bind:5,bind_mount_opt:5,bio:5,bisect:[8,10],bit:7,blob:11,block:[6,10,11],block_siz:11,blocksiz:10,blog:7,blueprint:[0,8,10],blueprint_exist:11,blueprint_nam:[2,10],blueprints_chang:2,blueprints_cmd:2,blueprints_delet:2,blueprints_depsolv:2,blueprints_diff:2,blueprints_freez:2,blueprints_freeze_sav:2,blueprints_freeze_show:2,blueprints_list:2,blueprints_push:2,blueprints_sav:2,blueprints_show:2,blueprints_tag:2,blueprints_undo:2,blueprints_workspac:2,bodi:[0,11],bool:[2,10,11],boot:[1,4,6,7,9,10,11],boot_uefi:10,bootabl:5,bootdir:10,bootload:[5,7,11],bootloader_append:11,bootproto:5,both:[5,7,11],bound:11,boundri:11,box:5,brace:10,brace_expand:10,branch:[5,7,11],brian:[1,5,6,7],brianlan:11,browser:7,bug:[5,6,7],bugurl:[6,10],bugzilla:5,build:[2,4,5,6,7,9,10,11],build_config_ref:11,build_env_ref:11,build_id:11,build_statu:11,build_tim:11,buildarch:[6,10],builder:[5,11],buildinstal:4,buildsi:5,buildstamp:8,built:[6,10,11],builtin:10,bump:[7,11],bump_vers:11,bunch:10,bundl:5,bzip2:[5,10],c30b7d80:11,cach:[5,6,7,10],cachedir:[6,10],calcul:10,calculate_disk_s:10,call:[4,5,10,11],callback:10,calledprocesserror:10,caller:11,can:[1,2,5,6,7,9,10,11],cancel:[1,2,5,10],cancel_func:10,cannot:[0,5,6,7,11],captur:10,care:[10,11],cat:5,categor:7,caught:[5,11],caus:[7,10],cdboot:7,cdlabel:10,cee5f4c20fc33ea4d54bfecf56f4ad41ad15f4f3:11,central:4,cert:10,certif:[6,7,11],cfg:[10,11],chang:[1,2,5,6,7,10],changelog:[1,11],charact:[7,10],check:[7,10,11],check_gpg:[7,11],check_kickstart:10,check_queu:11,check_ssl:[7,11],checkparam:[8,10],checksum:5,checksum_typ:5,child:10,chmod:[6,10],chmod_:10,cho2:7,choos:5,chosen:[5,10,11],chown_:10,chroot:[5,6,9,10],chroot_setup_cmd:5,chvt:5,cisco:11,clean:[4,5,7,11],cleanup:[5,10,11],cleanup_tmpdir:11,clear:[4,7,11],clearpart:5,cli:[0,3,7,8,11],client:[0,5,11],client_address:10,clone:[7,11],close:10,cloud:[5,7],cls:10,cmd:10,cmdline:[0,8],cmdlist:10,code:[6,7,10,11],collect:11,com:[1,5,6,7,11],combin:[2,5],come:11,comma:[2,10,11],command:[0,1,2,4,5,6,7,9,10,11],commandlin:[1,7,10],comment_prefix:11,commit:[1,2,7,10],commit_id:11,commit_recip:11,commit_recipe_directori:11,commit_recipe_fil:11,commitdetail:11,committimevalerror:11,common:[5,6],commonli:7,commun:[0,2,7],comoposit:11,compar:11,compat:7,complet:[4,7,10,11],compon:5,compos:[3,8,10],compose_arg:[7,11],compose_cancel:2,compose_cmd:2,compose_delet:2,compose_detail:11,compose_imag:2,compose_info:2,compose_list:2,compose_log:2,compose_metadata:2,compose_result:2,compose_start:2,compose_statu:[2,10],compose_typ:[2,7,10],composer_cli_pars:2,composerconfig:11,composerpars:11,composit:11,compress:[5,9,10,11],compress_arg:[5,11],compressarg:10,compressopt:10,comput:10,conf:[4,6,7,10,11],conf_fil:[10,11],config:[5,6,7,8,10],config_opt:5,configfil:6,configpars:11,configur:[4,5,6,7,10,11],conflict:[6,7],connect:0,connectionpool:0,consist:[1,4],consol:7,construct:[7,10],constructor:11,contain:[4,6,7,9,10,11],content:[3,6,7,8,9],context:10,continu:[2,10],control:[4,7,10,11],convent:5,convert:[2,5,7,10,11],copi:[1,4,5,6,7,9,10,11],copy_dracut_hook:10,copyin:5,copytre:10,core:5,correct:[2,4,5,7,10,11],correctli:[5,10,11],correspond:10,could:[5,7],count:11,coupl:5,cpio:10,cpu:10,crash:10,creat:[1,4,6,7,9,10,11],create_ext4_runtim:10,create_gitrpm_repo:11,create_pxe_config:10,create_squashfs_runtim:10,create_vagrant_metadata:10,createaddrs:10,createrepo:5,createrepo_c:11,creation:[4,9,10,11],creator:[3,7,8,11],cross:11,crossdomain:[8,10],current:[1,4,5,7,10,11],custom:[4,5,9,11],customize_ks_templ:11,cwd:0,d6bd:11,data:[0,4,5,10,11],datahold:[10,11],dbo:[10,11],debug:[7,10],decod:10,decor:8,dee:11,default_image_nam:10,default_sect:11,defin:[5,7,11],delai:[7,10],delet:[0,1,2,5,6,7,10],delete_fil:11,delete_recip:11,delete_repo_sourc:11,delete_url_json:0,delimit:11,denial:[5,7],dep:11,dep_evra:11,dep_nevra:11,depend:[1,2,5,6,9,11],deploy:[7,10,11],depmod:10,depsolv:[1,2,7,10],describ:[5,7,11],descript:[1,5,7,10,11],desir:11,desktop:5,dest:[10,11],destdir:11,destfil:10,destin:[6,7,10,11],detach:10,detail:[1,2,7,11],detect:[5,10],dev:[5,6,10],devel:5,develop:[5,7,11],devic:[5,6,10],devicemapp:10,dhcp:5,dialog:5,dict:[0,2,10,11],dict_typ:11,dictionari:11,didn:5,died:5,diff:[1,2,10],diff_item:11,differ:[1,2,5,7,10,11],difficult:11,dir:[5,6,10,11],direcori:10,direct:11,directli:[2,5,7,11],directori:[1,5,6,7,9,10,11],dirinstall_path:10,disabl:[6,10],disablerepo:[6,10],discinfo:[6,8],disk:[1,10],disk_imag:5,disk_img:10,disk_info:5,disk_siz:10,diskimag:10,dispatch:2,displai:[1,2,5,7],disposit:0,distribut:6,dm_attach:10,dm_detach:10,dmdev:10,dmsetup:10,dnf:[6,7,10,11],dnf_conf:11,dnf_obj:10,dnf_repo_to_file_repo:11,dnfbase:8,dnfhelper:8,dnflock:11,dnfplugin:[6,10],do_graft:10,doc:[5,7],document:[5,6,7],doe:[2,5,6,7,10,11],doesn:[2,5,7,10,11],doing:[5,7,11],domacboot:10,domain:7,don:[5,10,11],done:[1,10,11],doupgrad:10,down:11,download:[0,2,6,10,11],download_fil:0,downloadprogress:10,dracut:10,dracut_arg:[5,6],dracut_default:10,dracut_hook:10,dracut_hooks_path:10,drawback:5,drive:6,driven:4,driver:[4,10],drop:[7,9],dst:10,due:5,dump:11,dure:2,dyy8gj:11,e083921a7ed1cf2eec91ad12b9ad1e70ef3470b:11,e695affd:11,e6fa6db4:11,each:[1,2,5,6,7,10,11],easi:10,easier:5,ec2:5,echo:5,edit:[7,11],edk2:5,effect:7,efi:[5,7],either:[5,7,10,11],el7:11,els:10,emit:10,empti:[6,10,11],empty_lines_in_valu:11,enabl:[5,6,7,10,11],enablerepo:[6,10],encod:10,encount:[5,11],encrypt:7,end:[1,5,6,7,10,11],endfor:10,endif:6,enforc:[5,7,11],enhanc:5,enough:10,ensur:[10,11],enter:11,entir:7,entri:[2,5,7,10,11],env_add:10,env_prun:10,environ:[5,6,10],epoch:[2,11],equival:10,err:10,error:[2,5,7,8,10],escap:10,especi:7,estim:11,estimate_s:[10,11],etc:[5,6,7,10,11],even:[5,6,11],ever:0,everi:11,everyth:[5,6,10],exact:[7,11],exactli:[7,11],examin:5,exampl:[1,2,5,9,10,11],except:[5,6,7,10,11],exclud:10,excludepkg:[6,10],exec:5,execproduct:10,execreadlin:10,execut:[2,4,7,10],executil:8,execwithcaptur:10,execwithredirect:10,exist:[0,1,4,5,6,7,10,11],exit:[1,2,5,6,7,10],expand:10,expans:10,expect:[5,7,10],experi:10,expir:11,expire_sec:11,explor:1,exract:11,ext4:[1,6,7,10],extens:[1,6],extern:10,extra:[2,5,7,11],extra_boot_arg:[5,10],extract:[10,11],f15:5,f16:5,f629b7a948f5:11,fail:[1,2,7,10],failur:[10,11],fairli:6,fakednf:10,fals:[1,2,5,6,7,10,11],far:5,fatal:[5,10],fatalerror:10,fe925c35e795:11,featur:5,fedora:[3,5,6,7,10,11],fedoraproject:[5,6,11],feedback:5,fetch:[0,10],few:[5,6],field:[7,11],figur:4,fila:11,file:[0,1,2,4,6,7,9,10,11],fileglob:10,filenam:[0,1,2,10,11],filesystem:[1,7,9,10,11],fill:11,filter:10,filter_stderr:10,find:[0,4,5,10,11],find_commit_tag:11,find_free_port:10,find_nam:11,find_ostree_root:10,find_templ:10,findkernel:10,finish:[1,2,6,7,10],firmwar:5,first:[4,5,7,10,11],fit:5,five:2,fix:10,flag:10,flask:11,flatten:5,flexibl:4,fmt:10,fname:10,fobj:10,follow:[2,5,10,11],forc:[6,7,10,11],form:[0,6,11],format:[1,2,5,7,10],found:[5,7,10,11],four:2,free:[6,10],freez:[1,2,10],from:[0,1,2,4,5,6,7,9,10,11],from_commit:10,frozen:[1,2],frozen_toml_filenam:2,fs_imag:5,fs_label:5,fsck:10,fsimag:[5,10],fstab:5,fstype:[5,10],ftruncat:10,full:[0,7,10,11],further:10,futur:7,game:11,gener:[2,4,5,6,10,11],generate_module_data:10,generate_module_info:10,get:[0,5,7,10,11],get_arch:10,get_base_dir:11,get_base_object:11,get_buildarch:10,get_commit_detail:11,get_compose_typ:11,get_default:11,get_dnf_base_object:10,get_extra_pkg:11,get_filenam:0,get_image_nam:11,get_iso_label:10,get_kernel_append:11,get_loop_nam:10,get_repo_descript:11,get_repo_sourc:11,get_revision_from_tag:11,get_source_id:11,get_url_json:0,get_url_json_unlimit:0,get_url_raw:0,gfile:11,ggit:11,gib:[5,6,10],gid:[7,11],git:[5,11],gitarchivetarbal:11,github:5,gitlock:11,gitrepo:11,gitrpm:[8,10],gitrpmbuild:11,given:[0,10,11],glanc:5,glob:[6,7,10,11],glusterf:11,gnome:5,gnu:11,goe:[4,6,10],going:5,good:[5,10],gpg:[7,11],gpgcheck:7,gpgkei:[7,11],gpgkey_url:[7,11],gplv3:11,graft:10,group:[1,5,10,11],group_nam:11,group_typ:11,grow:5,growpart:5,grub2:[5,7],grub:10,gui:7,gzip:[5,10],had:5,handl:[2,5,6,7,10],handle_api_result:2,handler:10,happen:[5,6,10],hard:11,hardlink:10,has:[2,5,7,9,10,11],hash:[1,2,7,11],have:[2,5,6,7,10,11],haven:5,hawkei:11,hda:1,head:[7,11],head_commit:11,header:[0,7,11],hello:5,help:[0,5,8,10],here:[4,5,6,7,9,11],higer:11,highbank:5,higher:6,histori:[7,11],hold:11,home:[5,7],homepag:11,hook:10,host:[0,5,6,7,10,11],hostnam:7,how:[4,10],howev:7,http:[0,1,2,5,6,7,10,11],http_client:8,httpconnect:0,httpconnectionpool:0,human:2,hw_random:10,hwmon:10,i386:10,ia64:10,id_rsa:7,idea:[4,5],ideal:10,identifi:[2,6],ids:11,ignor:10,imag:[2,3,4,6,10],image_nam:[5,7,11],image_s:11,image_typ:[5,10],images_dir:10,img:[5,6,9,10],img_mount:10,img_siz:10,imgutil:8,immedi:7,immut:[7,11],implantisomd5:10,implement:[9,10],includ:[0,2,5,7,9,11],inclus:11,incom:10,increment:11,indent:2,index:[3,11],indic:10,individu:2,info:[1,2,7,10],inform:[1,2,4,6,7,11],init:[5,7,10],init_file_log:10,init_stream_log:10,initi:10,initramf:[5,6,10,11],initrd:[5,6,10],initrd_address:10,initrd_path:10,inject:7,inline_comment_prefix:11,input:[5,10],inroot:10,insecur:5,insert:11,insid:[5,10,11],insort_left:11,instal:[1,2,4,8,9,11],install_log:10,installclass:9,installerror:10,installimg:[9,10],installinitrd:10,installkernel:10,installpkg:[6,9,10,11],installroot:[6,10],installtre:10,installupgradeinitrd:10,instanc:[5,11],instead:[1,2,5,6,7,11],instroot:4,instruct:5,insuffici:10,integ:11,interact:1,interfac:7,interfer:6,intermedi:1,interpol:11,intrd:10,introduct:3,invalid:11,ioerror:11,is_commit_tag:11,is_image_mount:10,is_parent_diff:11,iserror:10,isfin:[6,10],isn:[5,10,11],iso:[1,4,10,11],iso_nam:5,iso_path:10,isoinfo:10,isolabel:10,isolinux:10,isomountpoint:10,issu:7,item:[2,10,11],iter:[10,11],its:[5,10,11],itself:7,jboss:11,job:11,job_creat:11,job_finish:11,job_start:11,joinpath:10,json:[0,1,2,5,7,10],just:[9,10],kbyte:10,kdir:10,keep:[1,5,10,11],keepglob:10,kei:[7,10,11],kernel:[5,6,10,11],kernel_append:11,kernel_arg:[5,10],kickstart:[7,10,11],kickstartpars:10,kill:[5,10],knowledg:4,known:2,kpartx:[5,10],kpartx_disk_img:10,ks_path:10,ks_templat:11,ksflatten:5,kubernet:11,kvm:[1,5],kwarg:[10,11],label:[5,10],lambda:10,lane:[1,5,6,7],larg:[7,11],last:[1,2,10,11],later:[6,10],latest:5,launch:7,lazi:10,lead:[0,10],least:[5,10],leav:[7,10,11],left:[10,11],leftmost:11,leftov:[5,10],len:11,less:11,level:[5,6,7,10,11],lib64_arch:10,lib:[7,10,11],librari:4,libus:11,libvirt:5,licens:11,light:6,like:[1,5,6,7,9,10,11],limit:[0,5,7,10],line:[4,7,10,11],link:10,linktre:10,linux:[5,6,10],list:[1,2,4,5,6,7,10],list_branch_fil:11,list_commit:11,list_commit_fil:11,listen:[1,7,10],live:[1,4,7,10,11],live_image_nam:10,live_rootfs_s:5,livecd:10,livemedia:[3,7,10,11],liveo:[6,10],livesi:5,livetemplaterunn:10,lmc:[5,10],lmc_parser:10,load:10,local:[1,5,10,11],localhost:10,locat:[5,6],lock:[7,11],lock_check:11,log:[1,2,5,6,10],log_check:10,log_error:10,log_output:10,log_path:10,log_request_handler_class:10,log_selinux_st:10,logdir:10,logfil:[1,5,6,7,10,11],logger:10,logic:6,logmonitor:10,lognam:10,logrequesthandl:10,logserv:10,longer:[7,11],look:[4,5,7,9,11],loop:[5,6,10],loop_attach:10,loop_detach:10,loop_dev:10,loop_waitfor:10,loopdev:10,loopx:10,loopxpn:10,lorax:[1,5,9,10,11],lorax_composer_pars:11,lorax_pars:10,lorax_templ:5,loraxdir:10,loraxdownloadcallback:10,loraxrpmcallback:10,loraxtempl:10,loraxtemplaterunn:[6,10],lose:5,losetup:10,lost:11,low:10,lowercas:10,lowest:10,lpar:10,lst:11,ltmpl:[6,8],lvm2:10,lzma:[5,10],macboot:[5,6],made:[7,10],mai:[5,6,7,10,11],mail:5,main:2,maintain:4,make:[5,6,7,10,11],make_:7,make_appli:10,make_compos:11,make_disk:7,make_dnf_dir:11,make_git_rpm:11,make_imag:10,make_live_imag:10,make_livecd:10,make_owned_dir:11,make_queue_dir:11,make_runtim:10,make_squashf:10,makestamp:4,maketreeinfo:4,mako:[4,5,6,10],manag:1,mandatori:[7,11],mani:11,manual:11,map:2,mask:10,master:11,match:[5,7,10,11],max_ag:11,maximum:11,maxretri:10,mbr:5,meant:[10,11],mechan:7,media:[5,10],megabyt:5,member:[1,5],memlimit:10,memori:[5,10],memtest86:5,mention:10,messag:[7,10,11],metadata:[1,2,5,6,7,10],metalink:[7,11],method:[5,7,10,11],mib:10,mime:11,mind:[5,11],minim:[5,7,10],minimum:[5,11],minut:5,mirror:[5,10,11],mirrorlist:[6,7,10,11],mirrormanag:5,miss:[10,11],mix:4,mkbtrfsimg:10,mkcpio:10,mkdir:[5,6,10],mkdosimg:10,mkext4img:10,mkf:10,mkfsarg:10,mkfsimag:10,mkfsimage_from_disk:10,mkhfsimg:10,mknod:5,mkqcow2:10,mkqemu_img:10,mkrootfsimg:10,mkspars:10,mksquashf:10,mktar:10,mnt:[7,10],mock:[1,7],mockfil:7,moddir:10,mode:[1,5,6,10,11],modeless:10,modifi:[5,10,11],modul:[1,3,4,6,8],module_nam:10,module_nv:11,modules_cmd:2,modules_info:11,modules_list:11,monitor:[5,8,11],more:[4,5,7,10],most:[1,2,5,11],mount:[5,7,8],mount_boot_part_over_root:10,mount_dir:10,mount_ok:10,mountarg:10,mountpoint:[5,10],move:[6,7,10,11],move_compose_result:[7,11],msg:10,much:10,multi:5,multipl:[2,6,10,11],must:[5,6,7,9,10,11],mvebu:5,myconfig:10,name:[2,10],namespac:2,need:[1,2,5,6,7,10,11],neither:11,network:[5,7,10],never:10,nevra:[2,11],new_item:11,new_recip:11,newer:5,newest:[1,2,11],newli:10,newlin:10,newrecipegit:11,newrun:10,next:[10,11],nice:2,noarch:[7,11],node:[5,6],nomacboot:[5,6],non:[7,10,11],none:[0,5,7,10,11],nop:10,normal:[1,5,6,9],nosmt:7,nosuchpackag:10,note:[5,6,10,11],noth:[2,10,11],noupgrad:6,noverifi:6,noverifyssl:[6,10],novirt:5,novirt_cancel_check:10,novirt_instal:[7,10,11],now:[5,6,9,10,11],nspawn:[5,6],number:[1,2,5,6,7,10,11],nvr:6,object:[0,10,11],observ:5,occas:10,occur:10,oci_config:5,oci_runtim:5,octalmod:10,off:7,offset:[0,10],oid:11,old:[5,6,10,11],old_item:11,old_recip:11,old_vers:11,older:5,omap:5,onc:[1,5,6,7],one:[1,2,5,6,7,9,10,11],ones:[6,10,11],onli:[2,5,6,7,10,11],onto:6,open:11,open_or_create_repo:11,openh264:11,openstack:1,oper:[4,5,7,11],opt:[2,7,10,11],option:[4,5,6,7,10,11],order:[4,6,7,11],ordereddict:11,org:[5,6,11],origin:[0,5,7,11],ostre:[5,10],other:[4,5,6,7,10,11],otherwis:[7,10,11],ouput:11,out:[1,4,7,10,11],outfil:10,output:[1,2,5,6,8],outputdir:[6,10],outroot:10,outsid:10,over:[7,9],overhead:10,overrid:[5,6,7,10,11],overwrit:[7,11],overwritten:10,ovmf:5,ovmf_path:[5,10],own:[5,6,7,11],owner:[7,11],ownership:[7,11],p_dir:11,pacag:10,packag:[1,4,5,6,8,9],package_nam:11,package_nv:11,packagedir:10,packagenevra:2,page:3,param1:0,param2:0,param:[10,11],paramat:9,paramet:[0,2,10,11],parent:11,pars:[10,11],parser:10,part:[2,5,9,10,11],particular:10,partit:[1,5,10],partitin:5,partitionmount:10,pass:[1,5,6,7,9,10,11],passwd:5,password:[5,7,11],pat:10,patch:[7,11],path:[0,1,2,5,6,7,10,11],pathnam:10,pattern:10,payload:10,pcritic:10,pdebug:10,per:[10,11],permiss:[7,11],perror:10,phys_root:10,physic:10,pick:[1,10],pid:5,pinfo:10,ping:11,pivot:10,pkg:[2,10,11],pkg_to_build:11,pkg_to_dep:11,pkg_to_project:11,pkg_to_project_info:11,pkgglob:10,pkglistdir:10,pkgname:9,pkgsizefil:10,pki:11,place:[5,6,9,10,11],plain:[6,7,10,11],plan:7,platform:[5,11],play0ad:11,pleas:10,plugin:6,plugin_conf:5,point:[4,5,7,10,11],popen:[10,11],popul:[10,11],port:[0,5,6,10],posit:11,possibl:[2,5,7,10,11],post:[0,5,7,10],post_url:0,post_url_json:0,post_url_toml:0,postinstal:10,postun:10,powerpc:10,ppc64:10,ppc64le:[9,10],ppc:9,pre:[5,7,10],precaut:1,preexec_fn:10,prefix:[5,7,10,11],prepar:11,prepare_commit:11,prepend:11,present:[4,5],preserv:10,pretti:[7,10],prettycommitdetail:2,prettydiffentri:2,preun:10,prevent:11,previou:[7,10,11],previous:[4,5],primari:5,primarili:7,print:[1,2],privileg:7,probabl:6,problem:[4,10,11],proc:10,procedur:10,process:[2,4,5,6,7,9,10,11],produc:[4,5,7,11],product:[3,6,10],program:[1,2,5,6,7,10,11],progress:[0,2,10],proj:11,proj_to_modul:11,project:[0,1,5,7,8,10],project_info:11,project_nam:10,projects_cmd:2,projects_depsolv:11,projects_depsolve_with_s:11,projects_info:[2,11],projects_list:[2,11],projectserror:11,pronounc:11,properti:11,protocol:7,provid:[4,5,6,10,11],proxi:[6,7,10,11],pub:[5,6,7],pubkei:5,pull:[4,5,6],pungi:4,purpos:[5,7],push:[1,2],put:[7,9,10,11],pwarn:10,pxe:10,pxeboot:6,pyanaconda:9,pykickstart:[10,11],pylorax:[4,6,7,8,9],pyo:10,python:[4,6,10,11],pythonpath:5,qcow2:[1,5,10],qemu:[1,10],qemu_arg:5,qemu_cmd:10,qemuinstal:10,queri:[0,2],queue:[2,7,8,10],queue_statu:11,quot:10,race:10,rais:[0,10,11],raise_err:10,ram:[5,10],random:[5,10],rang:10,rare:10,raw:[0,1,2,5,11],rawhid:[5,6],rdo:5,re_test:10,react:7,read:[4,5,10,11],read_commit:11,read_commit_spec:11,read_recipe_and_id:11,read_recipe_commit:11,readabl:2,readi:[10,11],readm:11,real:[5,7,10],realli:[5,6,10],reason:[5,10],reboot:7,rebuild:[5,6,10],rebuild_initrd:10,rebuild_initrds_for_l:10,recent:[1,2,11],recip:[8,10],recipe_dict:11,recipe_diff:11,recipe_filenam:11,recipe_from_dict:11,recipe_from_fil:11,recipe_from_toml:11,recipe_nam:11,recipe_path:11,recipe_str:11,recipeerror:11,recipefileerror:11,recipegit:11,recipegroup:11,recipemodul:11,recipepackag:11,recommend:[5,7],recurs:10,redhat:[1,5,6,7],redirect:[5,10],reduc:7,ref:[7,11],refer:[7,11],referenc:7,refus:5,regex:[8,10],rel:10,relat:[7,11],releas:[1,2,4,5,6,7,10,11],releasev:[5,7,10],relev:11,reli:4,reliabl:5,remain:[2,6,7],remaind:11,remov:[4,5,6,7,10,11],remove_temp:10,removefrom:[6,10],removekmod:[6,10],removepkg:[6,10],renam:[5,10],repl:10,replac:[4,5,6,7,9,10,11],repo1:5,repo2:5,repo:[4,6,10,11],repo_file_exist:11,repo_to_k:11,repo_to_sourc:11,repo_url:5,repodata:[5,11],repodict:11,report:[5,6,7,11],repositori:[6,7,10,11],represent:11,reproduc:11,reqpart:[5,10],request:[0,7,10,11],requir:[1,5,7,10,11],rerun:11,rescu:5,reserv:5,reset:10,reset_handl:10,reset_lang:10,resolv:10,resort:10,respond:7,respons:[0,1,10],rest:[7,10],restart:[7,11],restor:11,result:[0,1,2,5,6,7,10],result_dir:5,resultdir:5,results_dir:[10,11],retain:7,reticul:10,retriev:[7,11],retrysleep:10,retun:11,returncod:10,revert:[1,2,11],revert_fil:11,revert_recip:11,revis:11,revisor:4,revpars:11,rexist:10,rglob:10,rhel7:[3,5,11],rhel:5,rng:5,root:[1,4,5,6,7,10,11],root_dir:11,rootdir:10,rootf:[5,6,10],rootfs_imag:10,rootfs_siz:6,rootm:5,rootpw:[5,11],roughli:10,round:[10,11],round_to_block:10,rout:[0,7,10],rpm:[4,5,7,10,11],rpmbuild:11,rpmfluff:11,rpmname:[7,11],rpmreleas:[7,11],rpmversion:[7,11],rtype:11,run:[1,2,5,7,9,10,11],run_creat:10,run_pkg_transact:[6,10],runcmd:[6,10],runcmd_output:10,rundir:10,runner:10,runtim:[5,9,10],runtimebuild:[9,10],runtimeerror:[0,10,11],rxxx:11,s390x:10,safe:[7,10],samba:11,same:[5,6,7,10,11],sampl:10,satisfi:11,save:[0,1,2,6,7,10,11],sbin:[5,10],scene:7,scm:7,script:[4,5,10,11],scriptlet:10,search:[3,10,11],second:[5,11],section:[5,7,10,11],secur:1,see:[5,10,11],seem:10,select:[1,2,5,6,7,10,11],self:[7,10,11],selinux:[5,7,10],semver:[7,11],send:[0,1],separ:[2,10,11],sequenc:10,server:[0,1,2,7,8,10],servic:[6,7,10],set:[2,4,5,6,7,10,11],setenforc:6,setenv:10,setup:[5,6,7,10,11],setup_log:10,sever:[5,9,11],sha256:5,shallow:10,share:[5,6,7,9,10,11],share_dir:11,sharedir:[6,7,10],shell:7,ship:6,shlex:10,shortnam:10,should:[0,5,6,7,10,11],should_exit_now:2,show:[1,2,5,6,7,10],show_json:2,shutdown:[5,10],sig:11,sig_dfl:10,sig_ign:10,sign:[7,10,11],signal:10,signific:7,similar:[6,7],simpl:[2,6,7],simple_test:10,simplerpmbuild:11,simpli:7,simul:2,sinc:[5,7,11],singl:5,singleton:10,site:5,situat:7,size:[1,2,5,6,10],skip:[5,10,11],slice:11,slightli:5,slow:5,small:10,smp:5,socket:[0,1,2,7],socket_path:[0,2],socketserv:10,softwar:11,solut:5,solv:11,some:[0,4,5,6,7,10,11],someplac:7,someth:[4,5,7,10,11],sometim:5,sort:[6,11],sound:[6,10],sourc:[0,1,6,8,10],source_glob:11,source_nam:11,source_path:11,source_ref:11,source_to_repo:11,sources_add:2,sources_cmd:2,sources_delet:2,sources_info:2,sources_list:2,sourcesdir:11,space:[2,6,7,10,11],sparingli:11,spars:[5,10],speak:[4,6],spec:11,special:[6,11],specif:[5,6,7,9,10,11],specifi:[0,5,7,10,11],speed:5,spin:5,spline:10,split:10,split_and_expand:10,squashf:[5,10],squashfs_arg:[5,10],squashfs_onli:10,src:[3,5,10],srcdir:10,srcglob:10,srv:7,ssh:[5,7,11],sshd:5,sshkei:11,ssl:[6,10],sslverifi:10,stage2:10,stage:[4,5],standard:[10,11],start:[1,2,5,6,7,10,11],start_build:11,start_queue_monitor:11,startprogram:10,startup:7,state:[1,5,7,10,11],statement:10,statu:[0,7,8,10],status_cmd:2,status_filt:11,stderr:10,stdin:10,stdout:[10,11],step:[4,5],stick:7,still:[5,7,10],stop:[5,7],storag:[1,2,5,7,10,11],store:[5,6,7,10,11],str:[0,2,10,11],strang:5,stream:11,strict:11,strictli:6,string:[0,2,7,10,11],string_low:10,stuck:5,stuff:5,style:10,sub:10,subclass:11,subdirectori:11,submit:11,submodul:8,submount:10,subpackag:8,subprocess:10,subset:11,substitut:[5,6],succe:11,success:[10,11],sudo:[5,7],suffix:10,suit:[1,7],suitabl:[10,11],summari:[7,11],support:[1,2,4,5,6,9,11],sure:[5,7,10,11],suspect:5,swap:5,symlink:[6,10,11],sys:[2,10],sys_root_dir:10,sysimag:10,syslinux:5,sysroot:10,system:[1,5,6,7,10,11],system_sourc:11,systemctl:[6,7,10],systemd:[5,6,7,10],sysutil:8,tag:[1,2,6,7,10],tag_file_commit:11,tag_recipe_commit:11,take:[2,5,7,9,10,11],take_limit:11,talk:[0,2],tar:[1,2,7,11],tarfil:[5,10],target:[5,6,10],tcp:10,tcpserver:10,tear:11,tegra:5,tell:6,tempdir:10,templat:[4,5,7,9,10,11],template_fil:10,templatedir:10,templatefil:10,templaterunn:10,temporari:[1,2,4,5,6,7,10,11],termin:[5,10],test:[1,5,7,11],test_config:11,test_mod:11,test_templ:11,testmod:[1,2],text:[6,7,11],textiowrapp:10,than:[5,7,10,11],thei:[1,5,6,7,11],thelogg:10,them:[4,6,7,10,11],therefor:7,thi:[0,1,2,5,6,7,9,10,11],thing:[4,5,10,11],those:[4,9,11],though:[4,11],thread:[5,7,10,11],three:[2,7],thu:10,ti_don:10,ti_tot:10,time:[5,6,7,9,10,11],timeout:[0,5,10],timestamp:[8,10],timestamp_dict:11,titl:[5,10,11],tmp:[5,6,7,10,11],tmpdir:[10,11],tmpl:[9,10,11],to_commit:10,token:10,told:6,toml:[0,1,2,7,10],toml_dict:11,toml_filenam:2,tomlerror:11,tool:[1,4,5,6],top:[5,6,7,9,10,11],total:[5,11],total_drpm:10,total_fil:10,total_fn:0,total_s:10,touch:10,trace:10,traceback:10,track:[1,11],trail:11,transact:10,transactionprogress:10,transmogrifi:10,trash:5,treat:[7,10],tree:[4,5,6,9,10,11],treebuild:[8,9,11],treeinfo:[6,8],tri:[5,10,11],truckin:10,ts_done:10,ts_total:10,tty1:5,tty3:5,tui:5,tupl:[2,10,11],turn:4,two:[2,11],type:[0,1,2,5,10],typic:10,udev_escap:10,uid:[7,11],umask:10,umount:[5,7,10],uncompress:11,undelet:11,under:[5,6,7,10,11],understand:7,undo:[1,2,10],unicodedecodeerror:10,uniqu:11,unit:10,unix:[0,2,7,11],unix_socket:8,unixhttpconnect:0,unixhttpconnectionpool:0,unknown:10,unless:11,unmaintain:4,unmount:[5,10],unneed:[4,6,7,10,11],unpack:4,unpartit:10,until:[7,10],untouch:10,unus:[2,5],upd:4,updat:[2,3,5,6,10,11],update_vagrant_metadata:10,upgrad:10,upload:[5,7],upstream:11,upstream_vc:11,url:[0,5,6,7,10,11],urllib3:0,usabl:5,usag:[1,5,6,7,10],usbutil:10,use:[0,1,2,5,6,7,10,11],used:[1,2,4,5,6,7,10,11],useful:[5,10],user:[1,10,11],user_dracut_arg:10,useradd:7,uses:[5,6,7,10,11],using:[1,2,5,6,7,9,10,11],usr:[5,6,7,9,10,11],usual:[5,7],utc:11,utf:10,util:[0,5,8],uuid:[1,2,7,10],uuid_cancel:11,uuid_delet:11,uuid_dir:11,uuid_imag:11,uuid_info:11,uuid_log:11,uuid_statu:11,uuid_tar:11,v0_api:11,vagrant:10,vagrant_metadata:5,vagrantfil:5,valid:[7,10,11],valu:[2,10,11],valueerror:11,valuetok:10,variabl:[5,6,10],variant:[6,10],variou:[10,11],vcpu:[5,10],verbatim:5,veri:5,verifi:[1,6,10],version:[0,1,2,4,5,6,7,10,11],vhd:1,via:[5,6,7],video:10,view:1,virt:[10,11],virt_instal:10,virtio:10,virtio_consol:10,virtio_host:10,virtio_port:10,virtual:[5,10],vmdk:1,vmlinuz:[5,10],vnc:[5,10],volid:[5,6,10],volum:[5,6],wai:[2,5,7,11],wait:[1,10,11],want:[5,7,11],warfar:11,warn:[10,11],wasn:5,watch:5,web:[5,7],websit:5,weight:6,welcom:5,welder:7,weldr:[1,7,11],well:[5,6,7,11],were:[10,11],what:[0,4,5,6,7,10,11],whatev:11,wheel:[5,7],when:[5,6,7,10,11],whenev:10,where:[1,5,6,7,10,11],whether:[2,10,11],which:[1,2,4,5,6,7,9,10,11],whitespac:10,who:5,whole:10,widest:7,widget:7,wildcard:7,winnt:10,with_cor:11,with_rng:5,without:[5,6,11],word:10,work:[10,11],work_dir:10,workdir:[6,10],workflow:4,workspac:[1,2,8,10],workspace_delet:11,workspace_dir:11,workspace_read:11,workspace_writ:11,world:5,would:[5,7,9,10],write:[4,10,11],write_commit:11,write_fil:11,write_ks_group:11,write_ks_root:11,write_ks_us:11,write_timestamp:11,writepkglist:10,writepkgs:10,written:[4,5,7,10],wrong:10,wrote:11,wwood:10,www:11,x86:[6,9,10,11],x86_64:[5,6,10,11],xattr:10,xfce:5,xfsprog:10,xml:5,xorrisof:6,xxxx:5,xxxxx:5,yield:11,you:[1,5,6,7,9,10,11],your:[5,6,7,9,11],yourdomain:5,yum:[4,5,7,11],yumbas:11,yumlock:11,zero:[10,11],zerombr:5},titles:["composer package","composer-cli","composer.cli package","Welcome to Lorax's documentation!","Introduction to Lorax","livemedia-creator","Lorax","lorax-composer","src","Product and Updates Images","pylorax package","pylorax.api package"],titleterms:{"import":7,"new":11,Adding:[7,11],The:6,Using:5,add:7,ami:5,anaconda:5,api:11,applianc:5,argument:[1,5,6,7],atom:5,base:10,befor:4,bisect:11,blueprint:[1,2,7,11],blueprint_nam:11,boot:5,branch:3,build:1,buildstamp:10,cancel:11,chang:11,checkparam:11,cleanup:6,cli:[1,2],cmdline:[1,2,5,6,7,10,11],commit:11,compos:[0,1,2,7,11],compose_statu:11,compose_typ:11,config:11,contain:5,content:[0,2,10,11],creat:5,creation:[5,6],creator:[5,10],crossdomain:11,custom:[6,7],debug:5,decor:10,delet:11,depsolv:11,diff:11,discinfo:10,disk:[5,7],dnfbase:[10,11],dnfhelper:10,docker:5,document:3,download:1,dracut:[5,6],dvd:7,edit:1,error:11,exampl:7,executil:10,fail:11,file:5,filesystem:[5,6],finish:11,format:11,freez:11,from_commit:11,git:7,gitrpm:11,group:7,hack:5,help:2,how:[5,6,7],http_client:0,imag:[1,5,7,9,11],imgutil:10,indic:3,info:11,initi:5,insid:6,instal:[5,6,7,10],introduct:4,iso:[5,6,7],json:11,kbyte:11,kernel:7,kickstart:5,limit:11,list:11,live:5,livemedia:5,log:[7,11],lorax:[3,4,6,7],ltmpl:10,metadata:11,mock:[5,6],modul:[0,2,7,10,11],module_nam:11,monitor:[1,10],mount:10,name:[1,5,6,7,11],note:7,oci:5,offset:11,open:5,openstack:5,other:3,output:[7,10,11],packag:[0,2,7,10,11],partit:7,posit:[1,6,7],post:11,postinstal:6,problem:5,product:9,project:[2,11],project_nam:11,proxi:5,pxe:5,pylorax:[10,11],qemu:5,queue:11,quickstart:[5,6,7],recip:11,regex:11,repo:[5,7],repositori:5,requir:6,respons:11,result:11,rout:11,run:6,runtim:6,secur:7,server:11,size:11,sourc:[2,7,11],squashf:6,src:8,sshkei:7,statu:[1,2,11],submodul:[0,2,10,11],subpackag:[0,10],support:7,sysutil:10,tabl:3,tag:11,tar:5,templat:6,thing:7,timestamp:11,tmpl:6,to_commit:11,toml:11,treebuild:10,treeinfo:10,type:[7,11],uefi:5,undo:11,unix_socket:0,updat:9,user:[5,7],util:2,uuid:11,vagrant:5,virt:5,welcom:3,work:[5,6,7],workspac:11}}) \ No newline at end of file +Search.setIndex({docnames:["composer","composer-cli","composer.cli","index","intro","livemedia-creator","lorax","lorax-composer","modules","product-images","pylorax","pylorax.api"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["composer.rst","composer-cli.rst","composer.cli.rst","index.rst","intro.rst","livemedia-creator.rst","lorax.rst","lorax-composer.rst","modules.rst","product-images.rst","pylorax.rst","pylorax.api.rst"],objects:{"":{composer:[0,0,0,"-"],pylorax:[10,0,0,"-"]},"composer.cli":{blueprints:[2,0,0,"-"],cmdline:[2,0,0,"-"],compose:[2,0,0,"-"],help:[2,0,0,"-"],main:[2,1,1,""],modules:[2,0,0,"-"],projects:[2,0,0,"-"],sources:[2,0,0,"-"],status:[2,0,0,"-"],utilities:[2,0,0,"-"]},"composer.cli.blueprints":{blueprints_changes:[2,1,1,""],blueprints_cmd:[2,1,1,""],blueprints_delete:[2,1,1,""],blueprints_depsolve:[2,1,1,""],blueprints_diff:[2,1,1,""],blueprints_freeze:[2,1,1,""],blueprints_freeze_save:[2,1,1,""],blueprints_freeze_show:[2,1,1,""],blueprints_list:[2,1,1,""],blueprints_push:[2,1,1,""],blueprints_save:[2,1,1,""],blueprints_show:[2,1,1,""],blueprints_tag:[2,1,1,""],blueprints_undo:[2,1,1,""],blueprints_workspace:[2,1,1,""],prettyCommitDetails:[2,1,1,""],prettyDiffEntry:[2,1,1,""]},"composer.cli.cmdline":{composer_cli_parser:[2,1,1,""]},"composer.cli.compose":{compose_cancel:[2,1,1,""],compose_cmd:[2,1,1,""],compose_delete:[2,1,1,""],compose_image:[2,1,1,""],compose_info:[2,1,1,""],compose_list:[2,1,1,""],compose_log:[2,1,1,""],compose_logs:[2,1,1,""],compose_metadata:[2,1,1,""],compose_results:[2,1,1,""],compose_start:[2,1,1,""],compose_status:[2,1,1,""],compose_types:[2,1,1,""]},"composer.cli.modules":{modules_cmd:[2,1,1,""]},"composer.cli.projects":{projects_cmd:[2,1,1,""],projects_info:[2,1,1,""],projects_list:[2,1,1,""]},"composer.cli.sources":{sources_add:[2,1,1,""],sources_cmd:[2,1,1,""],sources_delete:[2,1,1,""],sources_info:[2,1,1,""],sources_list:[2,1,1,""]},"composer.cli.status":{status_cmd:[2,1,1,""]},"composer.cli.utilities":{argify:[2,1,1,""],frozen_toml_filename:[2,1,1,""],handle_api_result:[2,1,1,""],packageNEVRA:[2,1,1,""],toml_filename:[2,1,1,""]},"composer.http_client":{api_url:[0,1,1,""],append_query:[0,1,1,""],delete_url_json:[0,1,1,""],download_file:[0,1,1,""],get_filename:[0,1,1,""],get_url_json:[0,1,1,""],get_url_json_unlimited:[0,1,1,""],get_url_raw:[0,1,1,""],post_url:[0,1,1,""],post_url_json:[0,1,1,""],post_url_toml:[0,1,1,""]},"composer.unix_socket":{UnixHTTPConnection:[0,2,1,""],UnixHTTPConnectionPool:[0,2,1,""]},"composer.unix_socket.UnixHTTPConnection":{connect:[0,3,1,""]},"pylorax.ArchData":{bcj_arch:[10,4,1,""],lib64_arches:[10,4,1,""]},"pylorax.Lorax":{configure:[10,3,1,""],init_file_logging:[10,3,1,""],init_stream_logging:[10,3,1,""],run:[10,3,1,""],templatedir:[10,4,1,""]},"pylorax.api":{bisect:[11,0,0,"-"],checkparams:[11,0,0,"-"],cmdline:[11,0,0,"-"],compose:[11,0,0,"-"],config:[11,0,0,"-"],crossdomain:[11,0,0,"-"],dnfbase:[11,0,0,"-"],errors:[11,0,0,"-"],gitrpm:[11,0,0,"-"],projects:[11,0,0,"-"],queue:[11,0,0,"-"],recipes:[11,0,0,"-"],regexes:[11,0,0,"-"],server:[11,0,0,"-"],timestamp:[11,0,0,"-"],v0:[11,0,0,"-"],workspace:[11,0,0,"-"]},"pylorax.api.bisect":{insort_left:[11,1,1,""]},"pylorax.api.checkparams":{checkparams:[11,1,1,""]},"pylorax.api.cmdline":{lorax_composer_parser:[11,1,1,""]},"pylorax.api.compose":{add_customizations:[11,1,1,""],bootloader_append:[11,1,1,""],compose_args:[11,1,1,""],compose_types:[11,1,1,""],customize_ks_template:[11,1,1,""],firewall_cmd:[11,1,1,""],get_default_services:[11,1,1,""],get_extra_pkgs:[11,1,1,""],get_firewall_settings:[11,1,1,""],get_kernel_append:[11,1,1,""],get_keyboard_layout:[11,1,1,""],get_languages:[11,1,1,""],get_services:[11,1,1,""],get_timezone_settings:[11,1,1,""],keyboard_cmd:[11,1,1,""],lang_cmd:[11,1,1,""],move_compose_results:[11,1,1,""],repo_to_ks:[11,1,1,""],services_cmd:[11,1,1,""],start_build:[11,1,1,""],test_templates:[11,1,1,""],timezone_cmd:[11,1,1,""],write_ks_group:[11,1,1,""],write_ks_root:[11,1,1,""],write_ks_user:[11,1,1,""]},"pylorax.api.config":{ComposerConfig:[11,2,1,""],configure:[11,1,1,""],make_dnf_dirs:[11,1,1,""],make_owned_dir:[11,1,1,""],make_queue_dirs:[11,1,1,""]},"pylorax.api.config.ComposerConfig":{get_default:[11,3,1,""]},"pylorax.api.crossdomain":{crossdomain:[11,1,1,""]},"pylorax.api.dnfbase":{DNFLock:[11,2,1,""],get_base_object:[11,1,1,""]},"pylorax.api.dnfbase.DNFLock":{lock:[11,4,1,""],lock_check:[11,4,1,""]},"pylorax.api.gitrpm":{GitArchiveTarball:[11,2,1,""],GitRpmBuild:[11,2,1,""],create_gitrpm_repo:[11,1,1,""],get_repo_description:[11,1,1,""],make_git_rpm:[11,1,1,""]},"pylorax.api.gitrpm.GitArchiveTarball":{write_file:[11,3,1,""]},"pylorax.api.gitrpm.GitRpmBuild":{add_git_tarball:[11,3,1,""],check:[11,3,1,""],clean:[11,3,1,""],cleanup_tmpdir:[11,3,1,""],get_base_dir:[11,3,1,""]},"pylorax.api.projects":{ProjectsError:[11,5,1,""],api_changelog:[11,1,1,""],api_time:[11,1,1,""],delete_repo_source:[11,1,1,""],dep_evra:[11,1,1,""],dep_nevra:[11,1,1,""],dnf_repo_to_file_repo:[11,1,1,""],estimate_size:[11,1,1,""],get_repo_sources:[11,1,1,""],get_source_ids:[11,1,1,""],modules_info:[11,1,1,""],modules_list:[11,1,1,""],pkg_to_build:[11,1,1,""],pkg_to_dep:[11,1,1,""],pkg_to_project:[11,1,1,""],pkg_to_project_info:[11,1,1,""],proj_to_module:[11,1,1,""],projects_depsolve:[11,1,1,""],projects_depsolve_with_size:[11,1,1,""],projects_info:[11,1,1,""],projects_list:[11,1,1,""],repo_to_source:[11,1,1,""],source_to_repo:[11,1,1,""]},"pylorax.api.queue":{build_status:[11,1,1,""],check_queues:[11,1,1,""],compose_detail:[11,1,1,""],get_compose_type:[11,1,1,""],get_image_name:[11,1,1,""],make_compose:[11,1,1,""],monitor:[11,1,1,""],queue_status:[11,1,1,""],start_queue_monitor:[11,1,1,""],uuid_cancel:[11,1,1,""],uuid_delete:[11,1,1,""],uuid_image:[11,1,1,""],uuid_info:[11,1,1,""],uuid_log:[11,1,1,""],uuid_status:[11,1,1,""],uuid_tar:[11,1,1,""]},"pylorax.api.recipes":{CommitDetails:[11,2,1,""],CommitTimeValError:[11,5,1,""],NewRecipeGit:[11,1,1,""],Recipe:[11,2,1,""],RecipeError:[11,5,1,""],RecipeFileError:[11,5,1,""],RecipeGit:[11,2,1,""],RecipeGroup:[11,2,1,""],RecipeModule:[11,2,1,""],RecipePackage:[11,2,1,""],commit_recipe:[11,1,1,""],commit_recipe_directory:[11,1,1,""],commit_recipe_file:[11,1,1,""],delete_file:[11,1,1,""],delete_recipe:[11,1,1,""],diff_items:[11,1,1,""],find_commit_tag:[11,1,1,""],find_name:[11,1,1,""],get_commit_details:[11,1,1,""],get_revision_from_tag:[11,1,1,""],gfile:[11,1,1,""],head_commit:[11,1,1,""],is_commit_tag:[11,1,1,""],is_parent_diff:[11,1,1,""],list_branch_files:[11,1,1,""],list_commit_files:[11,1,1,""],list_commits:[11,1,1,""],open_or_create_repo:[11,1,1,""],prepare_commit:[11,1,1,""],read_commit:[11,1,1,""],read_commit_spec:[11,1,1,""],read_recipe_and_id:[11,1,1,""],read_recipe_commit:[11,1,1,""],recipe_diff:[11,1,1,""],recipe_filename:[11,1,1,""],recipe_from_dict:[11,1,1,""],recipe_from_file:[11,1,1,""],recipe_from_toml:[11,1,1,""],repo_file_exists:[11,1,1,""],revert_file:[11,1,1,""],revert_recipe:[11,1,1,""],tag_file_commit:[11,1,1,""],tag_recipe_commit:[11,1,1,""],write_commit:[11,1,1,""]},"pylorax.api.recipes.Recipe":{bump_version:[11,3,1,""],filename:[11,4,1,""],freeze:[11,3,1,""],group_names:[11,4,1,""],module_names:[11,4,1,""],module_nver:[11,4,1,""],package_names:[11,4,1,""],package_nver:[11,4,1,""],toml:[11,3,1,""]},"pylorax.api.server":{GitLock:[11,2,1,""]},"pylorax.api.server.GitLock":{dir:[11,4,1,""],lock:[11,4,1,""],repo:[11,4,1,""]},"pylorax.api.timestamp":{timestamp_dict:[11,1,1,""],write_timestamp:[11,1,1,""]},"pylorax.api.v0":{blueprint_exists:[11,1,1,""],take_limits:[11,1,1,""],v0_api:[11,1,1,""]},"pylorax.api.workspace":{workspace_delete:[11,1,1,""],workspace_dir:[11,1,1,""],workspace_read:[11,1,1,""],workspace_write:[11,1,1,""]},"pylorax.base":{BaseLoraxClass:[10,2,1,""],DataHolder:[10,2,1,""]},"pylorax.base.BaseLoraxClass":{pcritical:[10,3,1,""],pdebug:[10,3,1,""],perror:[10,3,1,""],pinfo:[10,3,1,""],pwarning:[10,3,1,""]},"pylorax.base.DataHolder":{copy:[10,3,1,""]},"pylorax.buildstamp":{BuildStamp:[10,2,1,""]},"pylorax.buildstamp.BuildStamp":{write:[10,3,1,""]},"pylorax.cmdline":{lmc_parser:[10,1,1,""],lorax_parser:[10,1,1,""]},"pylorax.creator":{FakeDNF:[10,2,1,""],calculate_disk_size:[10,1,1,""],check_kickstart:[10,1,1,""],create_pxe_config:[10,1,1,""],find_ostree_root:[10,1,1,""],get_arch:[10,1,1,""],is_image_mounted:[10,1,1,""],make_appliance:[10,1,1,""],make_image:[10,1,1,""],make_live_images:[10,1,1,""],make_livecd:[10,1,1,""],make_runtime:[10,1,1,""],make_squashfs:[10,1,1,""],mount_boot_part_over_root:[10,1,1,""],rebuild_initrds_for_live:[10,1,1,""],run_creator:[10,1,1,""],squashfs_args:[10,1,1,""]},"pylorax.creator.FakeDNF":{reset:[10,3,1,""]},"pylorax.decorators":{singleton:[10,1,1,""]},"pylorax.discinfo":{DiscInfo:[10,2,1,""]},"pylorax.discinfo.DiscInfo":{write:[10,3,1,""]},"pylorax.dnfbase":{get_dnf_base_object:[10,1,1,""]},"pylorax.dnfhelper":{LoraxDownloadCallback:[10,2,1,""],LoraxRpmCallback:[10,2,1,""]},"pylorax.dnfhelper.LoraxDownloadCallback":{end:[10,3,1,""],progress:[10,3,1,""],start:[10,3,1,""]},"pylorax.dnfhelper.LoraxRpmCallback":{error:[10,3,1,""],progress:[10,3,1,""]},"pylorax.executils":{ExecProduct:[10,2,1,""],augmentEnv:[10,1,1,""],execReadlines:[10,1,1,""],execWithCapture:[10,1,1,""],execWithRedirect:[10,1,1,""],runcmd:[10,1,1,""],runcmd_output:[10,1,1,""],setenv:[10,1,1,""],startProgram:[10,1,1,""]},"pylorax.imgutils":{DMDev:[10,2,1,""],LoopDev:[10,2,1,""],Mount:[10,2,1,""],PartitionMount:[10,2,1,""],compress:[10,1,1,""],copytree:[10,1,1,""],default_image_name:[10,1,1,""],dm_attach:[10,1,1,""],dm_detach:[10,1,1,""],do_grafts:[10,1,1,""],estimate_size:[10,1,1,""],get_loop_name:[10,1,1,""],kpartx_disk_img:[10,1,1,""],loop_attach:[10,1,1,""],loop_detach:[10,1,1,""],loop_waitfor:[10,1,1,""],mkbtrfsimg:[10,1,1,""],mkcpio:[10,1,1,""],mkdosimg:[10,1,1,""],mkext4img:[10,1,1,""],mkfsimage:[10,1,1,""],mkfsimage_from_disk:[10,1,1,""],mkhfsimg:[10,1,1,""],mkqcow2:[10,1,1,""],mkqemu_img:[10,1,1,""],mkrootfsimg:[10,1,1,""],mksparse:[10,1,1,""],mksquashfs:[10,1,1,""],mktar:[10,1,1,""],mount:[10,1,1,""],round_to_blocks:[10,1,1,""],umount:[10,1,1,""]},"pylorax.installer":{InstallError:[10,5,1,""],QEMUInstall:[10,2,1,""],anaconda_cleanup:[10,1,1,""],append_initrd:[10,1,1,""],create_vagrant_metadata:[10,1,1,""],find_free_port:[10,1,1,""],novirt_cancel_check:[10,1,1,""],novirt_install:[10,1,1,""],update_vagrant_metadata:[10,1,1,""],virt_install:[10,1,1,""]},"pylorax.installer.QEMUInstall":{QEMU_CMDS:[10,4,1,""]},"pylorax.ltmpl":{LiveTemplateRunner:[10,2,1,""],LoraxTemplate:[10,2,1,""],LoraxTemplateRunner:[10,2,1,""],TemplateRunner:[10,2,1,""],brace_expand:[10,1,1,""],rexists:[10,1,1,""],rglob:[10,1,1,""],split_and_expand:[10,1,1,""]},"pylorax.ltmpl.LiveTemplateRunner":{installpkg:[10,3,1,""]},"pylorax.ltmpl.LoraxTemplate":{parse:[10,3,1,""]},"pylorax.ltmpl.LoraxTemplateRunner":{append:[10,3,1,""],chmod:[10,3,1,""],copy:[10,3,1,""],createaddrsize:[10,3,1,""],hardlink:[10,3,1,""],install:[10,3,1,""],installimg:[10,3,1,""],installinitrd:[10,3,1,""],installkernel:[10,3,1,""],installpkg:[10,3,1,""],installupgradeinitrd:[10,3,1,""],log:[10,3,1,""],mkdir:[10,3,1,""],move:[10,3,1,""],remove:[10,3,1,""],removefrom:[10,3,1,""],removekmod:[10,3,1,""],removepkg:[10,3,1,""],replace:[10,3,1,""],run_pkg_transaction:[10,3,1,""],runcmd:[10,3,1,""],symlink:[10,3,1,""],systemctl:[10,3,1,""],treeinfo:[10,3,1,""]},"pylorax.ltmpl.TemplateRunner":{run:[10,3,1,""]},"pylorax.monitor":{LogMonitor:[10,2,1,""],LogRequestHandler:[10,2,1,""],LogServer:[10,2,1,""]},"pylorax.monitor.LogMonitor":{shutdown:[10,3,1,""]},"pylorax.monitor.LogRequestHandler":{finish:[10,3,1,""],handle:[10,3,1,""],iserror:[10,3,1,""],re_tests:[10,4,1,""],setup:[10,3,1,""],simple_tests:[10,4,1,""]},"pylorax.monitor.LogServer":{log_check:[10,3,1,""],timeout:[10,4,1,""]},"pylorax.mount":{IsoMountpoint:[10,2,1,""]},"pylorax.mount.IsoMountpoint":{get_iso_label:[10,3,1,""],umount:[10,3,1,""]},"pylorax.sysutils":{chmod_:[10,1,1,""],chown_:[10,1,1,""],joinpaths:[10,1,1,""],linktree:[10,1,1,""],remove:[10,1,1,""],replace:[10,1,1,""],touch:[10,1,1,""]},"pylorax.treebuilder":{RuntimeBuilder:[10,2,1,""],TreeBuilder:[10,2,1,""],findkernels:[10,1,1,""],generate_module_info:[10,1,1,""],string_lower:[10,1,1,""],udev_escape:[10,1,1,""]},"pylorax.treebuilder.RuntimeBuilder":{cleanup:[10,3,1,""],create_ext4_runtime:[10,3,1,""],create_squashfs_runtime:[10,3,1,""],finished:[10,3,1,""],generate_module_data:[10,3,1,""],install:[10,3,1,""],postinstall:[10,3,1,""],verify:[10,3,1,""],writepkglists:[10,3,1,""],writepkgsizes:[10,3,1,""]},"pylorax.treebuilder.TreeBuilder":{build:[10,3,1,""],copy_dracut_hooks:[10,3,1,""],dracut_hooks_path:[10,4,1,""],implantisomd5:[10,3,1,""],kernels:[10,4,1,""],rebuild_initrds:[10,3,1,""]},"pylorax.treeinfo":{TreeInfo:[10,2,1,""]},"pylorax.treeinfo.TreeInfo":{add_section:[10,3,1,""],write:[10,3,1,""]},composer:{cli:[2,0,0,"-"],http_client:[0,0,0,"-"],unix_socket:[0,0,0,"-"]},pylorax:{ArchData:[10,2,1,""],Lorax:[10,2,1,""],api:[11,0,0,"-"],base:[10,0,0,"-"],buildstamp:[10,0,0,"-"],cmdline:[10,0,0,"-"],creator:[10,0,0,"-"],decorators:[10,0,0,"-"],discinfo:[10,0,0,"-"],dnfbase:[10,0,0,"-"],dnfhelper:[10,0,0,"-"],executils:[10,0,0,"-"],find_templates:[10,1,1,""],get_buildarch:[10,1,1,""],imgutils:[10,0,0,"-"],installer:[10,0,0,"-"],log_selinux_state:[10,1,1,""],ltmpl:[10,0,0,"-"],monitor:[10,0,0,"-"],mount:[10,0,0,"-"],output:[10,0,0,"-"],setup_logging:[10,1,1,""],sysutils:[10,0,0,"-"],treebuilder:[10,0,0,"-"],treeinfo:[10,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"],"5":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:function","2":"py:class","3":"py:method","4":"py:attribute","5":"py:exception"},terms:{"01t08":11,"03374adbf080fe34f5c6c29f2e49cc2b86958bf2":11,"03397f8d":11,"06e8":11,"08t00":11,"0ad":11,"0e08ecbb708675bfabc82952599a1712a843779d":11,"0instal":11,"10t23":11,"11t00":11,"11t01":11,"13z":11,"1kb":2,"1mbyte":11,"23t00":11,"28z":11,"29b492f26ed35d80800b536623bafc51e2f0eff2":11,"2b4174b3614b":11,"2ping":11,"30z":11,"3700mib":10,"3726a1093fd0":11,"397f":11,"3e11eb87a63d289662cba4b1804a0947a6843379":11,"3rn8evie2t50lmvybyihtgvrhcaecmeck31l":7,"41ef9c3e4b73":11,"44c0":11,"45502a6d":11,"45e380f39894":11,"47z":11,"48a5":11,"4a23":11,"4af9":11,"4b70":11,"4b8a":11,"4c68":11,"4c9f":11,"4cdb":11,"523b":11,"52z":11,"56z":11,"61b799739ce8":11,"6d292bd0":11,"7078e521a54b12eae31c3fd028680da7a0815a4d":11,"70b84195":11,"745712b2":11,"7f16":11,"870f":11,"8c8435ef":11,"8d7d":11,"96db":11,"99anaconda":10,"9bf1":11,"9c81":11,"byte":11,"case":[7,11],"catch":[5,10],"char":10,"class":[0,9,10,11],"default":[1,5,6,7,10,11],"final":[1,4,5,6,7,9,10,11],"function":[2,7,10,11],"import":[5,10],"int":[2,10,11],"new":[0,1,2,4,5,6,7,10],"null":[5,11],"public":[5,7],"return":[0,1,2,7,10,11],"short":7,"switch":5,"true":[0,2,5,6,7,10,11],"try":[5,10,11],"var":[5,6,7,10],"while":[7,9,10,11],ADDING:10,Adding:10,And:[5,7],But:[5,7],For:[0,5,7,10],Its:[4,6],NOT:11,Not:10,One:[5,7],RTS:11,The:[0,1,2,4,5,7,9,10,11],There:[5,7,10,11],These:[7,9,11],Use:[5,6,10,11],Used:[5,10],Uses:11,Using:11,Will:10,Yes:10,__init__:0,_io:10,_map:7,a215:11,a2ef832e6b1a:11,a697ca405cdf:11,aarch64:[6,9,10],abbrevi:5,abl:[6,7],abort:5,about:[1,2,5,11],abov:5,absolut:10,accept:7,access:[5,7,11],accomplish:5,account:[7,10],acff:11,acl:[10,11],action:10,activ:[5,7],actual:[10,11],ad52:11,add2636e7459:11,add:[0,1,2,5,6,9,10,11],add_arch_templ:[6,10],add_arch_template_var:[6,10],add_arg:10,add_custom:11,add_git_tarbal:11,add_sect:10,add_templ:[6,10],add_template_var:[6,10],added:[5,7,10,11],adding:[7,10],addit:[2,5,6,7,10,11],addon:11,addr:10,addrsiz:10,admin:7,administr:7,ae1bf7e3:11,af92:11,afford:5,after:[5,6,10,11],against:5,alia:11,alibaba:1,align:5,all:[0,1,2,4,5,6,7,9,10,11],allbut:[6,10],alloc:5,allow:[5,6,7],allow_no_valu:11,almost:4,along:[6,11],alreadi:[7,10,11],also:[1,5,6,7,10,11],alwai:[5,7,11],amazon:5,america:7,ami:[1,7],amount:7,anaconda:[1,4,6,7,9,10,11],anaconda_arg:[5,11],anaconda_cleanup:10,anaconfigurationthread:11,ancient:11,ani:[0,1,2,5,7,10,11],anoth:[5,6,10],anyth:[9,11],anywher:10,api:[0,1,2,7,8,10],api_changelog:11,api_tim:11,api_url:0,api_vers:[0,2],apiv:1,app:5,app_fil:5,app_nam:5,app_templ:5,appear:10,append:[0,2,5,6,7,10,11],append_initrd:10,append_queri:0,appli:[1,10,11],applianc:10,applic:[7,11],appropri:[5,10],arbitrari:[6,7],arch:[2,4,5,6,10,11],archdata:10,architectur:[4,5,6,10],archiv:[5,7,9,10,11],aren:[6,11],arg:[1,2,5,6,10,11],argifi:2,argpars:[2,10],argument:[0,2,10,11],argumentpars:[2,10,11],argv:10,arm:[5,10],armhfp:10,armplatform:[5,11],around:5,artifact:[5,11],assembl:11,associ:10,assum:[10,11],atla:11,attach:10,attach_to_al:11,attempt:[4,10,11],attribut:[5,11],audit:11,augmentenv:10,authent:11,author:[1,5,6,7,11],authorized_kei:7,automat:[7,10],automatic_opt:11,avahi:11,avail:[1,2,5,7,11],awar:7,b36e:11,back:[1,10],backup:[10,11],bare:[5,11],base:[0,5,6,7,8,11],basearch:10,baseimag:7,baseloraxclass:10,basenam:10,baserequesthandl:10,basesystem:11,baseurl:[5,7,11],bash:[4,5,7,11],basic:[1,6],bcj_arch:10,bcl:[1,5,6,7],bd31:11,bdc:7,bec7:11,becaus:[5,6,7,11],becom:[5,7],been:[5,10,11],befor:[3,5,6,7,10],behind:[7,10],being:[5,6,7,11],below:[5,6,11],best:[5,6,7,11],better:10,between:[1,2,7,10,11],big:10,bin:[5,7,10],binari:[5,10],binary_output:10,bind:5,bind_mount_opt:5,bio:5,bisect:[8,10],bit:7,blob:11,block:[6,7,10,11],block_siz:11,blocksiz:10,blog:7,blueprint:[0,8,10],blueprint_exist:11,blueprint_nam:[2,10],blueprints_chang:2,blueprints_cmd:2,blueprints_delet:2,blueprints_depsolv:2,blueprints_diff:2,blueprints_freez:2,blueprints_freeze_sav:2,blueprints_freeze_show:2,blueprints_list:2,blueprints_push:2,blueprints_sav:2,blueprints_show:2,blueprints_tag:2,blueprints_undo:2,blueprints_workspac:2,bodi:[0,11],bool:[2,10,11],boot:[1,4,6,7,9,10,11],boot_uefi:10,bootabl:5,bootdir:10,bootload:[5,7,11],bootloader_append:11,bootproto:5,both:[5,7,11],bound:11,boundri:11,box:5,brace:10,brace_expand:10,branch:[5,7,11],brian:[1,5,6,7],brianlan:11,browser:7,bug:[5,6,7],bugurl:[6,10],bugzilla:5,build:[2,4,5,6,7,9,10,11],build_config_ref:11,build_env_ref:11,build_id:11,build_statu:11,build_tim:11,buildarch:[6,10],builder:[5,11],buildinstal:4,buildsi:5,buildstamp:8,built:[6,10,11],builtin:10,bump:[7,11],bump_vers:11,bunch:10,bundl:5,bzip2:[5,10],c30b7d80:11,cach:[5,6,7,10],cachedir:[6,10],calcul:10,calculate_disk_s:10,call:[4,5,10,11],callback:10,calledprocesserror:10,caller:11,can:[1,2,5,6,7,9,10,11],cancel:[1,2,5,10],cancel_func:10,cannot:[0,5,6,7,11],captur:10,care:[10,11],cat:5,categor:7,caught:[5,11],caus:[7,10],cdboot:7,cdlabel:10,cee5f4c20fc33ea4d54bfecf56f4ad41ad15f4f3:11,central:4,cert:10,certif:[6,7,11],cfg:[10,11],chang:[1,2,5,6,7,10],changelog:[1,11],charact:[7,10],check:[7,10,11],check_gpg:[7,11],check_kickstart:10,check_queu:11,check_ssl:[7,11],checkparam:[8,10],checksum:5,checksum_typ:5,child:10,chmod:[6,10],chmod_:10,cho2:7,choos:5,chosen:[5,10,11],chown_:10,chronyd:7,chroot:[5,6,9,10],chroot_setup_cmd:5,chvt:5,cisco:11,clean:[4,5,7,11],cleanup:[5,10,11],cleanup_tmpdir:11,clear:[4,7,11],clearpart:5,cli:[0,3,7,8,11],client:[0,5,11],client_address:10,clone:[7,11],close:10,cloud:[5,7],cls:10,cmd:[7,10],cmdline:[0,8],cmdlist:10,cockpit:7,code:[6,7,10,11],collect:11,com:[1,5,6,7,11],combin:[2,5],come:11,comma:[2,10,11],command:[0,1,2,4,5,6,7,9,10,11],commandlin:[1,7,10],comment_prefix:11,commit:[1,2,7,10],commit_id:11,commit_recip:11,commit_recipe_directori:11,commit_recipe_fil:11,commitdetail:11,committimevalerror:11,common:[5,6],commonli:7,commun:[0,2,7],comoposit:11,compar:11,compat:7,complet:[4,7,10,11],compon:5,compos:[3,8,10],compose_arg:[7,11],compose_cancel:2,compose_cmd:2,compose_delet:2,compose_detail:11,compose_imag:2,compose_info:2,compose_list:2,compose_log:2,compose_metadata:2,compose_result:2,compose_start:2,compose_statu:[2,10],compose_typ:[2,7,10],composer_cli_pars:2,composerconfig:11,composerpars:11,composit:11,compress:[5,9,10,11],compress_arg:[5,11],compressarg:10,compressopt:10,comput:10,conf:[4,6,7,10,11],conf_fil:[10,11],config:[5,6,7,8,10],config_opt:5,configfil:6,configpars:11,configur:[4,5,6,7,10,11],conflict:[6,7],connect:0,connectionpool:0,consist:[1,4],consol:7,construct:[7,10],constructor:11,contain:[4,6,7,9,10,11],content:[3,6,7,8,9],context:10,continu:[2,10],control:[4,7,10,11],convent:5,convert:[2,5,7,10,11],copi:[1,4,5,6,7,9,10,11],copy_dracut_hook:10,copyin:5,copytre:10,core:5,correct:[2,4,5,7,10,11],correctli:[5,7,10,11],correspond:10,could:[5,7],count:11,coupl:5,cpio:10,cpu:10,crash:10,creat:[1,4,6,7,9,10,11],create_ext4_runtim:10,create_gitrpm_repo:11,create_pxe_config:10,create_squashfs_runtim:10,create_vagrant_metadata:10,createaddrs:10,createrepo:5,createrepo_c:11,creation:[4,9,10,11],creator:[3,7,8,11],cross:11,crossdomain:[8,10],current:[1,4,5,7,10,11],custom:[4,5,9,11],customize_ks_templ:11,cwd:0,d6bd:11,data:[0,4,5,10,11],datahold:[10,11],dbo:[10,11],debug:[7,10],decod:10,decor:8,dee:11,default_image_nam:10,default_sect:11,defin:[5,7,11],delai:[7,10],delet:[0,1,2,5,6,7,10],delete_fil:11,delete_recip:11,delete_repo_sourc:11,delete_url_json:0,delimit:11,denial:[5,7],dep:11,dep_evra:11,dep_nevra:11,depend:[1,2,5,6,9,11],deploy:[7,10,11],depmod:10,depsolv:[1,2,7,10],describ:[5,7,11],descript:[1,5,7,10,11],desir:11,desktop:5,dest:[10,11],destdir:11,destfil:10,destin:[6,7,10,11],detach:10,detail:[1,2,7,11],detect:[5,10],dev:[5,6,10],devel:5,develop:[5,7,11],devic:[5,6,10],devicemapp:10,dhcp:[5,7],dialog:5,dict:[0,2,10,11],dict_typ:11,dictionari:11,didn:5,died:5,diff:[1,2,10],diff_item:11,differ:[1,2,5,7,10,11],difficult:11,dir:[5,6,10,11],direcori:10,direct:11,directli:[2,5,7,11],directori:[1,5,6,7,9,10,11],dirinstall_path:10,disabl:[6,7,10,11],disablerepo:[6,10],discinfo:[6,8],disk:[1,10],disk_imag:5,disk_img:10,disk_info:5,disk_siz:10,diskimag:10,dispatch:2,displai:[1,2,5,7],disposit:0,distribut:[6,7],dm_attach:10,dm_detach:10,dmdev:10,dmsetup:10,dnf:[6,7,10,11],dnf_conf:11,dnf_obj:10,dnf_repo_to_file_repo:11,dnfbase:8,dnfhelper:8,dnflock:11,dnfplugin:[6,10],do_graft:10,doc:[5,7],document:[5,6,7],doe:[2,5,6,7,10,11],doesn:[2,5,7,10,11],doing:[5,7,11],domacboot:10,domain:7,don:[5,10,11],done:[1,10,11],doupgrad:10,down:11,download:[0,2,6,10,11],download_fil:0,downloadprogress:10,dracut:10,dracut_arg:[5,6],dracut_default:10,dracut_hook:10,dracut_hooks_path:10,drawback:5,drive:6,driven:4,driver:[4,10],drop:[7,9],dst:10,due:5,dump:11,dure:2,dyy8gj:11,e083921a7ed1cf2eec91ad12b9ad1e70ef3470b:11,e695affd:11,e6fa6db4:11,each:[1,2,5,6,7,10,11],easi:10,easier:5,eastern:7,ec2:5,echo:5,edit:[7,11],edk2:5,effect:7,efi:[5,7],either:[5,7,10,11],el7:11,els:10,emit:10,empti:[6,7,10,11],empty_lines_in_valu:11,en_u:7,enabl:[5,6,7,10,11],enablerepo:[6,10],encod:10,encount:[5,11],encrypt:7,end:[1,5,6,7,10,11],endfor:10,endif:6,enforc:[5,7,11],enhanc:5,enough:10,ensur:[10,11],enter:11,entir:7,entri:[2,5,7,10,11],env_add:10,env_prun:10,environ:[5,6,7,10],epoch:[2,11],equival:10,err:10,error:[2,5,7,8,10],escap:10,especi:7,estim:11,estimate_s:[10,11],etc:[5,6,7,10,11],even:[5,6,11],ever:0,everi:11,everyth:[5,6,10],exact:[7,11],exactli:[7,11],examin:5,exampl:[1,2,5,9,10,11],except:[5,6,7,10,11],exclud:10,excludepkg:[6,10],exec:5,execproduct:10,execreadlin:10,execut:[2,4,7,10],executil:8,execwithcaptur:10,execwithredirect:10,exist:[0,1,4,5,6,7,10,11],exit:[1,2,5,6,7,10],expand:10,expans:10,expect:[5,7,10],experi:10,expir:11,expire_sec:11,explicitli:7,explor:1,exract:11,ext4:[1,6,7,10],extend:7,extens:[1,6],extern:10,extra:[2,5,7,11],extra_boot_arg:[5,10],extract:[10,11],f15:5,f16:5,f629b7a948f5:11,fail:[1,2,7,10],failur:[10,11],fairli:6,fakednf:10,fals:[1,2,5,6,7,10,11],far:5,fatal:[5,10],fatalerror:10,fe925c35e795:11,featur:5,fedora:[3,5,6,7,10,11],fedoraproject:[5,6,11],feedback:5,fetch:[0,10],few:[5,6],field:[7,11],figur:4,fila:11,file:[0,1,2,4,6,7,9,10,11],fileglob:10,filenam:[0,1,2,10,11],filesystem:[1,7,9,10,11],fill:11,filter:10,filter_stderr:10,find:[0,4,5,10,11],find_commit_tag:11,find_free_port:10,find_nam:11,find_ostree_root:10,find_templ:10,findkernel:10,fine:7,finish:[1,2,6,7,10],firewal:11,firewall_cmd:11,firewalld:7,firmwar:5,first:[4,5,7,10,11],fit:5,five:2,fix:10,flag:10,flask:11,flatten:5,flexibl:4,fmt:10,fname:10,fobj:10,follow:[2,5,10,11],forc:[6,7,10,11],form:[0,6,11],format:[1,2,5,7,10],found:[5,7,10,11],four:2,free:[6,10],freez:[1,2,10],from:[0,1,2,4,5,6,7,9,10,11],from_commit:10,frozen:[1,2],frozen_toml_filenam:2,fs_imag:5,fs_label:5,fsck:10,fsimag:[5,10],fstab:5,fstype:[5,10],ftp:7,ftruncat:10,full:[0,7,10,11],further:10,futur:7,game:11,gener:[2,4,5,6,10,11],generate_module_data:10,generate_module_info:10,get:[0,5,7,10,11],get_arch:10,get_base_dir:11,get_base_object:11,get_buildarch:10,get_commit_detail:11,get_compose_typ:11,get_default:11,get_default_servic:11,get_dnf_base_object:10,get_extra_pkg:11,get_filenam:0,get_firewall_set:11,get_image_nam:11,get_iso_label:10,get_kernel_append:11,get_keyboard_layout:11,get_languag:11,get_loop_nam:10,get_repo_descript:11,get_repo_sourc:11,get_revision_from_tag:11,get_servic:11,get_source_id:11,get_timezone_set:11,get_url_json:0,get_url_json_unlimit:0,get_url_raw:0,gfile:11,ggit:11,gib:[5,6,10],gid:[7,11],git:[5,11],gitarchivetarbal:11,github:5,gitlock:11,gitrepo:11,gitrpm:[8,10],gitrpmbuild:11,given:[0,10,11],glanc:5,glob:[6,7,10,11],glusterf:11,gnome:5,gnu:11,goe:[4,6,10],going:5,good:[5,10],googl:[1,7],gpg:[7,11],gpgcheck:7,gpgkei:[7,11],gpgkey_url:[7,11],gplv3:11,graft:10,group:[1,5,10,11],group_nam:11,group_typ:11,grow:5,growpart:5,grub2:[5,7],grub:10,gui:7,gzip:[5,10],had:5,handl:[2,5,6,7,10],handle_api_result:2,handler:10,happen:[5,6,10],hard:11,hardlink:10,has:[2,5,7,9,10,11],hash:[1,2,7,11],have:[2,5,6,7,10,11],haven:5,hawkei:11,hda:1,head:[7,11],head_commit:11,header:[0,7,11],hello:5,help:[0,5,8,10],here:[4,5,6,7,9,11],higer:11,highbank:5,higher:6,histori:[7,11],hold:11,home:[5,7],homepag:11,hook:10,host:[0,5,6,7,10,11],hostnam:7,how:[4,10],howev:7,http:[0,1,2,5,6,7,10,11],http_client:8,httpconnect:0,httpconnectionpool:0,httpd:7,human:2,hw_random:10,hwmon:10,hyper:1,i386:10,ia64:10,id_rsa:7,idea:[4,5],ideal:10,identifi:[2,6],ids:11,ignor:10,imag:[2,3,4,6,10],image_nam:[5,7,11],image_s:11,image_size_align:5,image_typ:[5,10],images_dir:10,imap:7,img:[5,6,9,10],img_mount:10,img_siz:10,imgutil:8,immedi:7,immut:[7,11],implantisomd5:10,implement:[9,10],includ:[0,2,5,7,9,11],inclus:11,incom:10,increment:11,indent:2,index:[3,11],indic:10,individu:2,info:[1,2,7,10],inform:[1,2,4,6,7,11],init:[5,7,10],init_file_log:10,init_stream_log:10,initi:10,initramf:[5,6,10,11],initrd:[5,6,10],initrd_address:10,initrd_path:10,inject:7,inline_comment_prefix:11,input:[5,10],inroot:10,insecur:5,insert:11,insid:[5,10,11],insort_left:11,instal:[1,2,4,8,9,11],install_log:10,installclass:9,installerror:10,installimg:[9,10],installinitrd:10,installkernel:10,installpkg:[6,9,10,11],installroot:[6,10],installtre:10,installupgradeinitrd:10,instanc:[5,11],instead:[1,2,5,6,7,11],instroot:4,instruct:5,insuffici:10,integ:11,interact:1,interfac:7,interfer:6,intermedi:1,interpol:11,intrd:10,introduct:3,invalid:11,ioerror:11,is_commit_tag:11,is_image_mount:10,is_parent_diff:11,iserror:10,isfin:[6,10],isn:[5,10,11],iso:[1,4,10,11],iso_nam:5,iso_path:10,isoinfo:10,isolabel:10,isolinux:10,isomountpoint:10,issu:7,item:[2,10,11],iter:[10,11],its:[5,10,11],itself:7,jboss:11,job:11,job_creat:11,job_finish:11,job_start:11,joinpath:10,json:[0,1,2,5,7,10],just:[9,10],kbyte:10,kdir:10,keep:[1,5,10,11],keepglob:10,kei:[7,10,11],kernel:[5,6,10,11],kernel_append:11,kernel_arg:[5,10],keyboard:[7,11],keyboard_cmd:11,keymap:7,kickstart:[7,10,11],kickstartpars:10,kill:[5,10],knowledg:4,known:2,kpartx:[5,10],kpartx_disk_img:10,ks_path:10,ks_templat:11,ksflatten:5,kubernet:11,kvm:[1,5],kwarg:[10,11],label:[5,10],lambda:10,lane:[1,5,6,7],lang:11,lang_cmd:11,languag:[7,11],larg:[7,11],last:[1,2,10,11],later:[6,10],latest:5,launch:7,layout:11,lazi:10,lead:[0,10],least:[5,10],leav:[7,10,11],left:[7,10,11],leftmost:11,leftov:[5,10],len:11,less:11,level:[5,6,7,10,11],lib64_arch:10,lib:[7,10,11],librari:4,libus:11,libvirt:5,licens:11,light:6,like:[1,5,6,7,9,10,11],limit:[0,5,7,10],line:[4,7,10,11],link:10,linktre:10,linux:[5,6,10],list:[1,2,4,5,6,7,10],list_branch_fil:11,list_commit:11,list_commit_fil:11,listen:[1,7,10],live:[1,4,7,10,11],live_image_nam:10,live_rootfs_s:5,livecd:10,livemedia:[3,7,10,11],liveo:[6,10],livesi:5,livetemplaterunn:10,lmc:[5,10],lmc_parser:10,load:10,local:[1,5,10,11],localectl:7,localhost:10,locat:[5,6],lock:[7,11],lock_check:11,log:[1,2,5,6,10],log_check:10,log_error:10,log_output:10,log_path:10,log_request_handler_class:10,log_selinux_st:10,logdir:10,logfil:[1,5,6,7,10,11],logger:10,logic:6,logmonitor:10,lognam:10,logrequesthandl:10,logserv:10,longer:[7,11],look:[4,5,7,9,11],loop:[5,6,10],loop_attach:10,loop_detach:10,loop_dev:10,loop_waitfor:10,loopdev:10,loopx:10,loopxpn:10,lorax:[1,5,9,10,11],lorax_composer_pars:11,lorax_pars:10,lorax_templ:5,loraxdir:10,loraxdownloadcallback:10,loraxrpmcallback:10,loraxtempl:10,loraxtemplaterunn:[6,10],lose:5,losetup:10,lost:11,low:10,lowercas:10,lowest:10,lpar:10,lst:11,ltmpl:[6,8],lvm2:10,lzma:[5,10],macboot:[5,6],made:[7,10],mai:[5,6,7,10,11],mail:5,main:2,maintain:4,make:[5,6,7,10,11],make_:7,make_appli:10,make_compos:11,make_disk:7,make_dnf_dir:11,make_git_rpm:11,make_imag:10,make_live_imag:10,make_livecd:10,make_owned_dir:11,make_queue_dir:11,make_runtim:10,make_squashf:10,make_tar_disk:10,makestamp:4,maketreeinfo:4,mako:[4,5,6,10],manag:1,mandatori:[7,11],mani:11,manual:11,map:2,mask:10,master:11,match:[5,7,10,11],max_ag:11,maximum:11,maxretri:10,mbr:5,meant:[10,11],mechan:7,media:[5,10],megabyt:5,member:[1,5],memlimit:10,memori:[5,10],memtest86:5,mention:10,messag:[7,10,11],metadata:[1,2,5,6,7,10],metalink:[7,11],method:[5,7,10,11],mib:[5,10],mime:11,mind:[5,11],minim:[5,7,10],minimum:[5,11],minut:5,mirror:[5,10,11],mirrorlist:[6,7,10,11],mirrormanag:5,miss:[10,11],mix:4,mkbtrfsimg:10,mkcpio:10,mkdir:[5,6,10],mkdosimg:10,mkext4img:10,mkf:10,mkfsarg:10,mkfsimag:10,mkfsimage_from_disk:10,mkhfsimg:10,mknod:5,mkqcow2:10,mkqemu_img:10,mkrootfsimg:10,mkspars:10,mksquashf:10,mktar:10,mnt:[7,10],mock:[1,7],mockfil:7,moddir:10,mode:[1,5,6,10,11],modeless:10,modifi:[5,10,11],modul:[1,3,4,6,8],module_nam:10,module_nv:11,modules_cmd:2,modules_info:11,modules_list:11,monitor:[5,8,11],more:[4,5,7,10],most:[1,2,5,7,11],mount:[5,7,8],mount_boot_part_over_root:10,mount_dir:10,mount_ok:10,mountarg:10,mountpoint:[5,10],move:[6,7,10,11],move_compose_result:[7,11],msg:10,much:10,multi:5,multipl:[2,5,6,7,10,11],must:[5,6,7,9,10,11],mvebu:5,myconfig:10,name:[2,10],namespac:2,need:[1,2,5,6,7,10,11],neither:11,network:[5,7,10],never:10,nevra:[2,11],new_item:11,new_recip:11,newer:5,newest:[1,2,11],newli:10,newlin:10,newrecipegit:11,newrun:10,next:[10,11],nice:2,noarch:[7,11],node:[5,6],nomacboot:[5,6],non:[7,10,11],none:[0,5,7,10,11],nop:10,normal:[1,5,6,9],north:7,nosmt:7,nosuchpackag:10,note:[5,6,10,11],noth:[2,10,11],noupgrad:6,noverifi:6,noverifyssl:[6,10],novirt:5,novirt_cancel_check:10,novirt_instal:[7,10,11],now:[5,6,9,10,11],nspawn:[5,6],ntp:7,ntpserver:[7,11],number:[1,2,5,6,7,10,11],numer:7,nvr:6,object:[0,10,11],observ:5,occas:10,occur:10,oci_config:5,oci_runtim:5,octalmod:10,off:7,offset:[0,10],oid:11,old:[5,6,10,11],old_item:11,old_recip:11,old_vers:11,older:5,omap:5,omit:7,onc:[1,5,6,7],one:[1,2,5,6,7,9,10,11],ones:[6,7,10,11],onli:[2,5,6,7,10,11],onto:6,open:[7,11],open_or_create_repo:11,openh264:11,openstack:[1,7],oper:[4,5,7,11],opt:[2,7,10,11],option:[4,5,6,7,10,11],order:[4,6,7,11],ordereddict:11,org:[5,6,7,11],origin:[0,5,7,11],ostre:[5,10],other:[4,5,6,7,10,11],otherwis:[7,10,11],ouput:11,out:[1,4,7,10,11],outfil:10,output:[1,2,5,6,8],outputdir:[6,10],outroot:10,outsid:10,over:[7,9],overhead:10,overrid:[5,6,7,10,11],overridden:7,overwrit:[7,11],overwritten:10,ovmf:5,ovmf_path:[5,10],own:[5,6,7,11],owner:[7,11],ownership:[7,11],p_dir:11,pacag:10,packag:[1,4,5,6,8,9],package_nam:11,package_nv:11,packagedir:10,packagenevra:2,page:3,param1:0,param2:0,param:[10,11],paramat:9,paramet:[0,2,10,11],parent:11,pars:[10,11],parser:10,part:[2,5,9,10,11],particular:10,partit:[1,5,10],partitin:5,partitionmount:10,pass:[1,5,6,7,9,10,11],passwd:5,password:[5,7,11],pat:10,patch:[7,11],path:[0,1,2,5,6,7,10,11],pathnam:10,pattern:10,payload:10,pcritic:10,pdebug:10,per:[10,11],permiss:[7,11],perror:10,phys_root:10,physic:10,pick:[1,10],pid:5,pinfo:10,ping:11,pivot:10,pkg:[2,10,11],pkg_to_build:11,pkg_to_dep:11,pkg_to_project:11,pkg_to_project_info:11,pkgglob:10,pkglistdir:10,pkgname:9,pkgsizefil:10,pki:11,place:[5,6,9,10,11],plain:[6,7,10,11],plan:7,platform:[5,11],play0ad:11,pleas:10,plugin:6,plugin_conf:5,point:[4,5,7,10,11],pool:7,popen:[10,11],popul:[10,11],port:[0,5,6,7,10,11],posit:11,possibl:[2,5,7,10,11],post:[0,5,7,10],post_url:0,post_url_json:0,post_url_toml:0,postfix:7,postinstal:10,postun:10,powerpc:10,ppc64:10,ppc64le:[9,10],ppc:9,pre:[5,7,10],precaut:1,preexec_fn:10,prefix:[5,7,10,11],prepar:11,prepare_commit:11,prepend:11,present:[4,5],preserv:10,pretti:[7,10],prettycommitdetail:2,prettydiffentri:2,preun:10,prevent:11,previou:[7,10,11],previous:[4,5],primari:[5,7],primarili:7,print:[1,2],privileg:7,probabl:6,problem:[4,10,11],proc:10,procedur:10,process:[2,4,5,6,7,9,10,11],produc:[4,5,7,11],product:[3,6,10],program:[1,2,5,6,7,10,11],progress:[0,2,10],proj:11,proj_to_modul:11,project:[0,1,5,7,8,10],project_info:11,project_nam:10,projects_cmd:2,projects_depsolv:11,projects_depsolve_with_s:11,projects_info:[2,11],projects_list:[2,11],projectserror:11,pronounc:11,properti:11,protocol:7,provid:[4,5,6,10,11],proxi:[6,7,10,11],pub:[5,6,7],pubkei:5,pull:[4,5,6],pungi:4,purpos:[5,7],push:[1,2],put:[7,9,10,11],pwarn:10,pxe:10,pxeboot:6,pyanaconda:9,pykickstart:[10,11],pylorax:[4,6,7,8,9],pyo:10,python:[4,6,10,11],pythonpath:5,qcow2:[1,5,10],qemu:[1,10],qemu_arg:5,qemu_cmd:10,qemuinstal:10,queri:[0,2],queue:[2,7,8,10],queue_statu:11,quot:10,race:10,rais:[0,10,11],raise_err:10,ram:[5,10],random:[5,10],rang:10,rare:10,raw:[0,1,2,5,11],rawhid:[5,6],rdo:5,re_test:10,react:7,read:[4,5,10,11],read_commit:11,read_commit_spec:11,read_recipe_and_id:11,read_recipe_commit:11,readabl:2,readi:[10,11],readm:11,real:[5,7,10],realli:[5,6,10],reason:[5,10],reboot:7,rebuild:[5,6,10],rebuild_initrd:10,rebuild_initrds_for_l:10,recent:[1,2,11],recip:[8,10],recipe_dict:11,recipe_diff:11,recipe_filenam:11,recipe_from_dict:11,recipe_from_fil:11,recipe_from_toml:11,recipe_nam:11,recipe_path:11,recipe_str:11,recipeerror:11,recipefileerror:11,recipegit:11,recipegroup:11,recipemodul:11,recipepackag:11,recommend:[5,7],recurs:10,redhat:[1,5,6,7],redirect:[5,10],reduc:7,ref:[7,11],refer:[7,11],referenc:7,refus:5,regex:[8,10],rel:10,relat:[7,11],releas:[1,2,4,5,6,7,10,11],releasev:[5,7,10],relev:11,reli:4,reliabl:5,remain:[2,6,7],remaind:11,rememb:7,remov:[4,5,6,7,10,11],remove_temp:10,removefrom:[6,10],removekmod:[6,10],removepkg:[6,10],renam:[5,10],repl:10,replac:[4,5,6,7,9,10,11],repo1:5,repo2:5,repo:[4,6,10,11],repo_file_exist:11,repo_to_k:11,repo_to_sourc:11,repo_url:5,repodata:[5,11],repodict:11,report:[5,6,7,11],repositori:[6,7,10,11],represent:11,reproduc:11,reqpart:[5,10],request:[0,7,10,11],requir:[1,5,7,10,11],rerun:11,rescu:5,reserv:5,reset:10,reset_handl:10,reset_lang:10,resolv:10,resort:10,respond:7,respons:[0,1,10],rest:[7,10],restart:[7,11],restor:11,result:[0,1,2,5,6,7,10],result_dir:5,resultdir:5,results_dir:[10,11],retain:7,reticul:10,retriev:[7,11],retrysleep:10,retun:11,returncod:10,revert:[1,2,11],revert_fil:11,revert_recip:11,revis:11,revisor:4,revpars:11,rexist:10,rglob:10,rhel7:[3,5,11],rhel:5,rng:5,root:[1,4,5,6,7,10,11],root_dir:11,rootdir:10,rootf:[5,6,10],rootfs_imag:10,rootfs_siz:6,rootm:5,rootpw:[5,11],roughli:10,round:[10,11],round_to_block:10,rout:[0,7,10],rpm:[4,5,7,10,11],rpmbuild:11,rpmfluff:11,rpmname:[7,11],rpmreleas:[7,11],rpmversion:[7,11],rtype:11,run:[1,2,5,7,9,10,11],run_creat:10,run_pkg_transact:[6,10],runcmd:[6,10],runcmd_output:10,rundir:10,runner:10,runtim:[5,9,10],runtimebuild:[9,10],runtimeerror:[0,10,11],rxxx:11,s390x:10,safe:[7,10],samba:11,same:[5,6,7,10,11],sampl:10,satisfi:11,save:[0,1,2,6,7,10,11],sbin:[5,10],scene:7,scm:7,script:[4,5,10,11],scriptlet:10,search:[3,10,11],second:[5,11],secondari:7,section:[5,7,10,11],secur:1,see:[5,10,11],seem:10,select:[1,2,5,6,7,10,11],self:[7,10,11],selinux:[5,7,10],semver:[7,11],send:[0,1],separ:[2,10,11],sequenc:10,server:[0,1,2,7,8,10],servic:[6,10,11],services_cmd:11,set:[2,4,5,6,7,10,11],setenforc:6,setenv:10,setup:[5,6,7,10,11],setup_log:10,sever:[5,9,11],sha256:5,shallow:10,share:[5,6,7,9,10,11],share_dir:11,sharedir:[6,7,10],shell:7,ship:6,shlex:10,shortnam:10,should:[0,5,6,7,10,11],should_exit_now:2,show:[1,2,5,6,7,10],show_json:2,shutdown:[5,10],sig:11,sig_dfl:10,sig_ign:10,sign:[7,10,11],signal:10,signific:7,similar:[6,7],simpl:[2,6,7],simple_test:10,simplerpmbuild:11,simpli:7,simul:2,sinc:[5,7,11],singl:5,singleton:10,site:5,situat:7,size:[1,2,5,6,10],skip:[5,10,11],slice:11,slightli:5,slow:5,small:10,smp:5,socket:[0,1,2,7],socket_path:[0,2],socketserv:10,softwar:11,solut:5,solv:11,some:[0,4,5,6,7,10,11],someplac:7,someth:[4,5,7,10,11],sometim:5,sort:[6,11],sound:[6,10],sourc:[0,1,6,8,10],source_glob:11,source_nam:11,source_path:11,source_ref:11,source_to_repo:11,sources_add:2,sources_cmd:2,sources_delet:2,sources_info:2,sources_list:2,sourcesdir:11,space:[2,6,7,10,11],sparingli:11,spars:[5,10],speak:[4,6],spec:11,special:[6,11],specif:[5,6,7,9,10,11],specifi:[0,5,7,10,11],speed:5,spin:5,spline:10,split:10,split_and_expand:10,squashf:[5,10],squashfs_arg:[5,10],squashfs_onli:10,src:[3,5,10],srcdir:10,srcglob:10,srv:7,ssh:[5,7,11],sshd:[5,7],sshkei:11,ssl:[6,10],sslverifi:10,stage2:10,stage:[4,5],standard:[10,11],start:[1,2,5,6,7,10,11],start_build:11,start_queue_monitor:11,startprogram:10,startup:7,state:[1,5,7,10,11],statement:10,statu:[0,7,8,10],status_cmd:2,status_filt:11,stderr:10,stdin:10,stdout:[10,11],step:[4,5],stick:7,still:[5,7,10],stop:[5,7],storag:[1,2,5,7,10,11],store:[5,6,7,10,11],str:[0,2,10,11],strang:5,stream:11,strict:11,strictli:6,string:[0,2,7,10,11],string_low:10,stuck:5,stuff:5,style:10,sub:10,subclass:11,subdirectori:11,submit:11,submodul:8,submount:10,subpackag:8,subprocess:10,subset:11,substitut:[5,6],succe:11,success:[10,11],sudo:[5,7],suffix:10,suit:[1,7],suitabl:[10,11],summari:[7,11],support:[1,2,4,5,6,9,11],sure:[5,7,10,11],suspect:5,swap:5,symlink:[6,10,11],sys:[2,10],sys_root_dir:10,sysimag:10,syslinux:5,sysroot:10,system:[1,5,6,7,10,11],system_sourc:11,systemctl:[6,7,10],systemd:[5,6,7,10],sysutil:8,tag:[1,2,6,7,10],tag_file_commit:11,tag_recipe_commit:11,take:[2,5,7,9,10,11],take_limit:11,talk:[0,2],tar:[1,2,7,11],tar_disk_nam:5,tar_img:10,tarbal:10,tarfil:[5,10],target:[5,6,10],tcp:[7,10],tcpserver:10,tear:11,tegra:5,tell:6,telnet:7,telnetd:7,tempdir:10,templat:[4,5,7,9,10,11],template_fil:10,templatedir:10,templatefil:10,templaterunn:10,temporari:[1,2,4,5,6,7,10,11],termin:[5,10],test:[1,5,7,11],test_config:11,test_mod:11,test_templ:11,testmod:[1,2],text:[6,7,11],textiowrapp:10,than:[5,7,10,11],thei:[1,5,6,7,11],thelogg:10,them:[4,6,7,10,11],therefor:7,thi:[0,1,2,5,6,7,9,10,11],thing:[4,5,10,11],those:[4,9,11],though:[4,11],thread:[5,7,10,11],three:[2,7],thu:10,ti_don:10,ti_tot:10,time:[5,6,7,9,10,11],timedatectl:7,timeout:[0,5,10],timestamp:[8,10],timestamp_dict:11,timezon:11,timezone_cmd:11,titl:[5,10,11],tmp:[5,6,7,10,11],tmpdir:[10,11],tmpl:[9,10,11],to_commit:10,token:10,told:6,toml:[0,1,2,7,10],toml_dict:11,toml_filenam:2,tomlerror:11,tool:[1,4,5,6],top:[5,6,7,9,10,11],total:[5,11],total_drpm:10,total_fil:10,total_fn:0,total_s:10,touch:10,trace:10,traceback:10,track:[1,11],trail:11,transact:10,transactionprogress:10,transmogrifi:10,trash:5,treat:[7,10],tree:[4,5,6,9,10,11],treebuild:[8,9,11],treeinfo:[6,8],tri:[5,10,11],truckin:10,ts_done:10,ts_total:10,tty1:5,tty3:5,tui:5,tupl:[2,10,11],turn:4,two:[2,11],type:[0,1,2,5,10],typic:10,udev_escap:10,udp:7,uid:[7,11],umask:10,umount:[5,7,10],uncompress:11,undelet:11,under:[5,6,7,10,11],understand:7,undo:[1,2,10],unicodedecodeerror:10,uniqu:11,unit:[7,10],unix:[0,2,7,11],unix_socket:8,unixhttpconnect:0,unixhttpconnectionpool:0,unknown:10,unless:11,unmaintain:4,unmount:[5,10],unneed:[4,6,7,10,11],unpack:4,unpartit:10,until:[7,10],untouch:10,unus:[2,5],upd:4,updat:[2,3,5,6,7,10,11],update_vagrant_metadata:10,upgrad:10,upload:[5,7],upstream:11,upstream_vc:11,url:[0,5,6,7,10,11],urllib3:0,usabl:5,usag:[1,5,6,7,10],usbutil:10,use:[0,1,2,5,6,7,10,11],used:[1,2,4,5,6,7,10,11],useful:[5,10],user:[1,10,11],user_dracut_arg:10,useradd:7,uses:[5,6,7,10,11],using:[1,2,5,6,7,9,10,11],usr:[5,6,7,9,10,11],usual:[5,7],utc:[7,11],utf:[7,10],util:[0,5,8],uuid:[1,2,7,10],uuid_cancel:11,uuid_delet:11,uuid_dir:11,uuid_imag:11,uuid_info:11,uuid_log:11,uuid_statu:11,uuid_tar:11,v0_api:11,vagrant:10,vagrant_metadata:5,vagrantfil:5,valid:[7,10,11],valu:[2,5,7,10,11],valueerror:11,valuetok:10,variabl:[5,6,10],variant:[6,10],variou:[10,11],vcpu:[5,10],verbatim:5,veri:5,verifi:[1,6,10],version:[0,1,2,4,5,6,7,10,11],vhd:1,via:[5,6,7],video:10,view:1,virt:[10,11],virt_instal:10,virtio:10,virtio_consol:10,virtio_host:10,virtio_port:10,virtual:[5,10],vmdk:1,vmlinuz:[5,10],vnc:[5,10],volid:[5,6,10],volum:[5,6],wai:[2,5,7,11],wait:[1,10,11],want:[5,7,11],warfar:11,warn:[10,11],wasn:5,watch:5,web:[5,7],websit:5,weight:6,welcom:5,welder:7,weldr:[1,7,11],well:[5,6,7,11],were:[10,11],what:[0,4,5,6,7,10,11],whatev:11,wheel:[5,7],when:[5,6,7,10,11],whenev:10,where:[1,5,6,7,10,11],whether:[2,10,11],which:[1,2,4,5,6,7,9,10,11],whitespac:10,who:5,whole:10,widest:7,widget:7,wildcard:7,winnt:10,with_cor:11,with_rng:5,without:[5,6,7,11],word:10,work:[10,11],work_dir:10,workdir:[6,10],workflow:4,workspac:[1,2,8,10],workspace_delet:11,workspace_dir:11,workspace_read:11,workspace_writ:11,world:5,would:[5,7,9,10],write:[4,10,11],write_commit:11,write_fil:11,write_ks_group:11,write_ks_root:11,write_ks_us:11,write_timestamp:11,writepkglist:10,writepkgs:10,written:[4,5,7,10],wrong:10,wrote:11,wwood:10,www:11,x86:[6,9,10,11],x86_64:[5,6,10,11],xattr:10,xfce:5,xfsprog:10,xml:5,xorrisof:6,xxxx:5,xxxxx:5,yield:11,you:[1,5,6,7,9,10,11],your:[5,6,7,9,11],yourdomain:5,yum:[4,5,7,11],yumbas:11,yumlock:11,zero:[10,11],zerombr:5},titles:["composer package","composer-cli","composer.cli package","Welcome to Lorax's documentation!","Introduction to Lorax","livemedia-creator","Lorax","lorax-composer","src","Product and Updates Images","pylorax package","pylorax.api package"],titleterms:{"import":7,"new":11,Adding:[7,11],The:6,Using:5,add:7,ami:5,anaconda:5,api:11,applianc:5,argument:[1,5,6,7],atom:5,base:10,befor:4,bisect:11,blueprint:[1,2,7,11],blueprint_nam:11,boot:5,branch:3,build:1,buildstamp:10,cancel:11,chang:11,checkparam:11,cleanup:6,cli:[1,2],cmdline:[1,2,5,6,7,10,11],commit:11,compos:[0,1,2,7,11],compose_statu:11,compose_typ:11,config:11,contain:5,content:[0,2,10,11],creat:5,creation:[5,6],creator:[5,10],crossdomain:11,custom:[6,7],debug:5,decor:10,delet:11,depsolv:11,diff:11,discinfo:10,disk:[5,7],dnfbase:[10,11],dnfhelper:10,docker:5,document:3,download:1,dracut:[5,6],dvd:7,edit:1,error:11,exampl:7,executil:10,fail:11,file:5,filesystem:[5,6],finish:11,firewal:7,format:11,freez:11,from_commit:11,git:7,gitrpm:11,group:7,hack:5,help:2,how:[5,6,7],http_client:0,imag:[1,5,7,9,11],imgutil:10,indic:3,info:11,initi:5,insid:6,instal:[5,6,7,10],introduct:4,iso:[5,6,7],json:11,kbyte:11,kernel:7,kickstart:5,limit:11,list:11,live:5,livemedia:5,local:7,log:[7,11],lorax:[3,4,6,7],ltmpl:10,metadata:11,mock:[5,6],modul:[0,2,7,10,11],module_nam:11,monitor:[1,10],mount:10,name:[1,5,6,7,11],note:7,oci:5,offset:11,open:5,openstack:5,other:3,output:[7,10,11],packag:[0,2,7,10,11],partit:7,posit:[1,6,7],post:11,postinstal:6,problem:5,product:9,project:[2,11],project_nam:11,proxi:5,pxe:5,pylorax:[10,11],qemu:5,queue:11,quickstart:[5,6,7],recip:11,regex:11,repo:[5,7],repositori:5,requir:6,respons:11,result:11,rout:11,run:6,runtim:6,secur:7,server:11,servic:7,size:11,sourc:[2,7,11],squashf:6,src:8,sshkei:7,statu:[1,2,11],submodul:[0,2,10,11],subpackag:[0,10],support:7,sysutil:10,tabl:3,tag:11,tar:5,templat:6,thing:7,timestamp:11,timezon:7,tmpl:6,to_commit:11,toml:11,treebuild:10,treeinfo:10,type:[7,11],uefi:5,undo:11,unix_socket:0,updat:9,user:[5,7],util:2,uuid:11,vagrant:5,virt:5,welcom:3,work:[5,6,7],workspac:11}}) \ No newline at end of file diff --git a/docs/man/.doctrees/composer-cli.doctree b/docs/man/.doctrees/composer-cli.doctree index f26ac124..0f18d8a5 100644 Binary files a/docs/man/.doctrees/composer-cli.doctree and b/docs/man/.doctrees/composer-cli.doctree differ diff --git a/docs/man/.doctrees/environment.pickle b/docs/man/.doctrees/environment.pickle index 6c579304..3b219d67 100644 Binary files a/docs/man/.doctrees/environment.pickle and b/docs/man/.doctrees/environment.pickle differ diff --git a/docs/man/.doctrees/livemedia-creator.doctree b/docs/man/.doctrees/livemedia-creator.doctree index 92a5db06..f52af600 100644 Binary files a/docs/man/.doctrees/livemedia-creator.doctree and b/docs/man/.doctrees/livemedia-creator.doctree differ diff --git a/docs/man/.doctrees/lorax-composer.doctree b/docs/man/.doctrees/lorax-composer.doctree index cad5f84e..cc0c7cfd 100644 Binary files a/docs/man/.doctrees/lorax-composer.doctree and b/docs/man/.doctrees/lorax-composer.doctree differ diff --git a/docs/man/.doctrees/pylorax.api.doctree b/docs/man/.doctrees/pylorax.api.doctree index f6e96c6f..aed81763 100644 Binary files a/docs/man/.doctrees/pylorax.api.doctree and b/docs/man/.doctrees/pylorax.api.doctree differ diff --git a/docs/man/.doctrees/pylorax.doctree b/docs/man/.doctrees/pylorax.doctree index 92f5b80a..d89912e7 100644 Binary files a/docs/man/.doctrees/pylorax.doctree and b/docs/man/.doctrees/pylorax.doctree differ diff --git a/docs/man/composer-cli.1 b/docs/man/composer-cli.1 index 1303b2a0..fe10694c 100644 --- a/docs/man/composer-cli.1 +++ b/docs/man/composer-cli.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "COMPOSER-CLI" "1" "Mar 27, 2019" "31.1" "Lorax" +.TH "COMPOSER-CLI" "1" "Apr 30, 2019" "31.4" "Lorax" .SH NAME composer-cli \- Composer Cmdline Utility Documentation . @@ -221,8 +221,8 @@ compose start http\-server qcow2\fP\&. It will print a UUID that you can use to keep track of the build. You can also cancel the build if needed. .sp The available types of images is displayed by \fBcomposer\-cli compose types\fP\&. -Currently this consists of: ami, ext4\-filesystem, live\-iso, openstack, -partitioned\-disk, qcow2, tar, vhd, vmdk +Currently this consists of: alibaba, ami, ext4\-filesystem, google, hyper\-v, +live\-iso, openstack, partitioned\-disk, qcow2, tar, vhd, vmdk .SH MONITOR THE BUILD STATUS .sp Monitor it using \fBcomposer\-cli compose status\fP, which will show the status of diff --git a/docs/man/livemedia-creator.1 b/docs/man/livemedia-creator.1 index 6c5aac4e..86715592 100644 --- a/docs/man/livemedia-creator.1 +++ b/docs/man/livemedia-creator.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "LIVEMEDIA-CREATOR" "1" "Mar 27, 2019" "31.1" "Lorax" +.TH "LIVEMEDIA-CREATOR" "1" "Apr 30, 2019" "31.4" "Lorax" .SH NAME livemedia-creator \- Live Media Creator Documentation . @@ -78,7 +78,7 @@ Create Live Install Media .nf .ft C usage: livemedia\-creator [\-h] - (\-\-make\-iso | \-\-make\-disk | \-\-make\-fsimage | \-\-make\-appliance | \-\-make\-ami | \-\-make\-tar | \-\-make\-pxe\-live | \-\-make\-ostree\-live | \-\-make\-oci | \-\-make\-vagrant) + (\-\-make\-iso | \-\-make\-disk | \-\-make\-fsimage | \-\-make\-appliance | \-\-make\-ami | \-\-make\-tar | \-\-make\-tar\-disk | \-\-make\-pxe\-live | \-\-make\-ostree\-live | \-\-make\-oci | \-\-make\-vagrant) [\-\-iso ISO] [\-\-iso\-only] [\-\-iso\-name ISO_NAME] [\-\-ks KS] [\-\-image\-only] [\-\-no\-virt] [\-\-proxy PROXY] [\-\-anaconda\-arg ANACONDA_ARGS] @@ -89,9 +89,11 @@ usage: livemedia\-creator [\-h] [\-\-extra\-boot\-args EXTRA_BOOT_ARGS] [\-\-disk\-image DISK_IMAGE] [\-\-keep\-image] [\-\-fs\-image FS_IMAGE] [\-\-image\-name IMAGE_NAME] - [\-\-fs\-label FS_LABEL] [\-\-image\-type IMAGE_TYPE] - [\-\-qemu\-arg QEMU_ARGS] [\-\-qcow2] - [\-\-qcow2\-arg QEMU_ARGS] [\-\-compression COMPRESSION] + [\-\-tar\-disk\-name TAR_DISK_NAME] [\-\-fs\-label FS_LABEL] + [\-\-image\-size\-align IMAGE_SIZE_ALIGN] + [\-\-image\-type IMAGE_TYPE] [\-\-qemu\-arg QEMU_ARGS] + [\-\-qcow2] [\-\-qcow2\-arg QEMU_ARGS] + [\-\-compression COMPRESSION] [\-\-compress\-arg COMPRESS_ARGS] [\-\-app\-name APP_NAME] [\-\-app\-template APP_TEMPLATE] [\-\-app\-file APP_FILE] [\-\-ram MEMORY] [\-\-vcpus VCPUS] [\-\-vnc VNC] @@ -143,6 +145,11 @@ Build a tar of the root filesystem .sp Default: False .TP +.B\-\-make\-tar\-disk +Build a tar of a partitioned disk image +.sp +Default: False +.TP .B\-\-make\-pxe\-live Build a live pxe boot squashfs image .sp @@ -270,11 +277,19 @@ Path to existing filesystem image to use for creating final image. .B\-\-image\-name Name of output file to create. Used for tar, fs and disk image. Default is a random name. .TP +.B\-\-tar\-disk\-name +Name of the archive member for make\-tar\-disk. +.TP .B\-\-fs\-label Label to set on fsimage, default is \(aqAnaconda\(aq .sp Default: "Anaconda" .TP +.B\-\-image\-size\-align +Create a disk image with a size that is a multiple of this value in MiB. +.sp +Default: 0 +.TP .B\-\-image\-type Create an image with qemu\-img. See qemu\-img \-\-help for supported formats. .TP diff --git a/docs/man/lorax-composer.1 b/docs/man/lorax-composer.1 index a4c7eef5..22df5897 100644 --- a/docs/man/lorax-composer.1 +++ b/docs/man/lorax-composer.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "LORAX-COMPOSER" "1" "Mar 27, 2019" "31.1" "Lorax" +.TH "LORAX-COMPOSER" "1" "Apr 30, 2019" "31.4" "Lorax" .SH NAME lorax-composer \- Lorax Composer Documentation . @@ -277,18 +277,20 @@ For purposes of blueprints, mandatory and default packages will be installed. T for selecting optional packages. .SS Customizations .sp -The \fB[[customizations]]\fP section can be used to configure the hostname of the final image. eg.: +The \fB[customizations]\fP section can be used to configure the hostname of the final image. eg.: .INDENT 0.0 .INDENT 3.5 .sp .nf .ft C -[[customizations]] +[customizations] hostname = "baseimage" .ft P .fi .UNINDENT .UNINDENT +.sp +This is optional and may be left out to use the defaults. .SS [customizations.kernel] .sp This allows you to append arguments to the bootloader\(aqs kernel commandline. This will not have any @@ -378,6 +380,122 @@ gid = 1130 .fi .UNINDENT .UNINDENT +.SS [customizations.timezone] +.sp +Customizing the timezone and the NTP servers to use for the system: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[customizations.timezone] +timezone = "US/Eastern" +ntpservers = ["0.north\-america.pool.ntp.org", "1.north\-america.pool.ntp.org"] +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The values supported by \fBtimezone\fP can be listed by running \fBtimedatectl list\-timezones\fP\&. +.sp +If no timezone is setup the system will default to using \fIUTC\fP\&. The ntp servers are also +optional and will default to using the distribution defaults which are fine for most uses. +.sp +In some image types there are already NTP servers setup, eg. Google cloud image, and they +cannot be overridden because they are required to boot in the selected environment. But the +timezone will be updated to the one selected in the blueprint. +.SS [customizations.locale] +.sp +Customize the locale settings for the system: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[customizations.locale] +languages = ["en_US.UTF\-8"] +keyboard = "us" +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +The values supported by \fBlanguages\fP can be listed by running \fBlocalectl list\-locales\fP from +the command line. +.sp +The values supported by \fBkeyboard\fP can be listed by running \fBlocalectl list\-keymaps\fP from +the command line. +.sp +Multiple languages can be added. The first one becomes the +primary, and the others are added as secondary. One or the other of \fBlanguages\fP +or \fBkeyboard\fP must be included (or both) in the section. +.SS [customizations.firewall] +.sp +By default the firewall blocks all access except for services that enable their ports explicitly, +like \fBsshd\fP\&. This command can be used to open other ports or services. Ports are configured using +the port:protocol format: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[customizations.firewall] +ports = ["22:tcp", "80:tcp", "imap:tcp", "53:tcp", "53:udp"] +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Numeric ports, or their names from \fB/etc/services\fP can be used in the \fBports\fP enabled/disabled lists. +.sp +The blueprint settings extend any existing settings in the image templates, so if \fBsshd\fP is +already enabled it will extend the list of ports with the ones listed by the blueprint. +.sp +If the distribution uses \fBfirewalld\fP you can specify services listed by \fBfirewall\-cmd \-\-get\-services\fP +in a \fBcustomizations.firewall.services\fP section: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[customizations.firewall.services] +enabled = ["ftp", "ntp", "dhcp"] +disabled = ["telnet"] +.ft P +.fi +.UNINDENT +.UNINDENT +.sp +Remember that the \fBfirewall.services\fP are different from the names in \fB/etc/services\fP\&. +.sp +Both are optional, if they are not used leave them out or set them to an empty list \fB[]\fP\&. If you +only want the default firewall setup this section can be omitted from the blueprint. +.sp +NOTE: The \fBGoogle\fP and \fBOpenStack\fP templates explicitly disable the firewall for their environment. +This cannot be overridden by the blueprint. +.SS [customizations.services] +.sp +This section can be used to control which services are enabled at boot time. +Some image types already have services enabled or disabled in order for the +image to work correctly, and cannot be overridden. eg. \fBami\fP requires +\fBsshd\fP, \fBchronyd\fP, and \fBcloud\-init\fP\&. Without them the image will not +boot. Blueprint services are added to, not replacing, the list already in the +templates, if any. +.sp +The service names are systemd service units. You may specify any systemd unit +file accepted by \fBsystemctl enable\fP eg. \fBcockpit.socket\fP: +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +[customizations.services] +enabled = ["sshd", "cockpit.socket", "httpd"] +disabled = ["postfix", "telnetd"] +.ft P +.fi +.UNINDENT +.UNINDENT .SS [[repos.git]] .sp The \fB[[repos.git]]\fP entries are used to add files from a \fIgit repository\fP diff --git a/docs/man/lorax.1 b/docs/man/lorax.1 index ad922f5f..6d169d0d 100644 --- a/docs/man/lorax.1 +++ b/docs/man/lorax.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "LORAX" "1" "Mar 27, 2019" "31.1" "Lorax" +.TH "LORAX" "1" "Apr 30, 2019" "31.4" "Lorax" .SH NAME lorax \- Lorax Documentation .