diff --git a/.buildinfo b/.buildinfo index b48190b2..54cfc865 100644 --- a/.buildinfo +++ b/.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: 98a432c0452272f3968f9d4d9720ed79 +config: f8c32864d71075ed86014ee145636981 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index c6c1215c..6092882e 100644 Binary files a/.doctrees/environment.pickle and b/.doctrees/environment.pickle differ diff --git a/.doctrees/livemedia-creator.doctree b/.doctrees/livemedia-creator.doctree index f52af600..7397f304 100644 Binary files a/.doctrees/livemedia-creator.doctree and b/.doctrees/livemedia-creator.doctree differ diff --git a/.doctrees/lorax-composer.doctree b/.doctrees/lorax-composer.doctree index cc0c7cfd..1bc583c8 100644 Binary files a/.doctrees/lorax-composer.doctree and b/.doctrees/lorax-composer.doctree differ diff --git a/.doctrees/pylorax.api.doctree b/.doctrees/pylorax.api.doctree index 291dc23b..0c572ee6 100644 Binary files a/.doctrees/pylorax.api.doctree and b/.doctrees/pylorax.api.doctree differ diff --git a/.doctrees/pylorax.doctree b/.doctrees/pylorax.doctree index 05396f41..9ba391ac 100644 Binary files a/.doctrees/pylorax.doctree and b/.doctrees/pylorax.doctree differ diff --git a/_modules/composer/cli.html b/_modules/composer/cli.html index 5ddfa492..142bc38f 100644 --- a/_modules/composer/cli.html +++ b/_modules/composer/cli.html @@ -8,7 +8,7 @@ - composer.cli — Lorax 31.7 documentation + composer.cli — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/blueprints.html b/_modules/composer/cli/blueprints.html index fe381784..23420d7f 100644 --- a/_modules/composer/cli/blueprints.html +++ b/_modules/composer/cli/blueprints.html @@ -8,7 +8,7 @@ - composer.cli.blueprints — Lorax 31.7 documentation + composer.cli.blueprints — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/cmdline.html b/_modules/composer/cli/cmdline.html index cf6697cb..d2b90ed1 100644 --- a/_modules/composer/cli/cmdline.html +++ b/_modules/composer/cli/cmdline.html @@ -8,7 +8,7 @@ - composer.cli.cmdline — Lorax 31.7 documentation + composer.cli.cmdline — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/compose.html b/_modules/composer/cli/compose.html index bc9d40e1..45828c73 100644 --- a/_modules/composer/cli/compose.html +++ b/_modules/composer/cli/compose.html @@ -8,7 +8,7 @@ - composer.cli.compose — Lorax 31.7 documentation + composer.cli.compose — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/modules.html b/_modules/composer/cli/modules.html index b0a24cb1..d887ce91 100644 --- a/_modules/composer/cli/modules.html +++ b/_modules/composer/cli/modules.html @@ -8,7 +8,7 @@ - composer.cli.modules — Lorax 31.7 documentation + composer.cli.modules — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/projects.html b/_modules/composer/cli/projects.html index 685d2429..8fb0f45d 100644 --- a/_modules/composer/cli/projects.html +++ b/_modules/composer/cli/projects.html @@ -8,7 +8,7 @@ - composer.cli.projects — Lorax 31.7 documentation + composer.cli.projects — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/sources.html b/_modules/composer/cli/sources.html index 00a859c6..15f9c6bd 100644 --- a/_modules/composer/cli/sources.html +++ b/_modules/composer/cli/sources.html @@ -8,7 +8,7 @@ - composer.cli.sources — Lorax 31.7 documentation + composer.cli.sources — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/status.html b/_modules/composer/cli/status.html index 47916949..d03db009 100644 --- a/_modules/composer/cli/status.html +++ b/_modules/composer/cli/status.html @@ -8,7 +8,7 @@ - composer.cli.status — Lorax 31.7 documentation + composer.cli.status — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/cli/utilities.html b/_modules/composer/cli/utilities.html index 444a9c47..720f518c 100644 --- a/_modules/composer/cli/utilities.html +++ b/_modules/composer/cli/utilities.html @@ -8,7 +8,7 @@ - composer.cli.utilities — Lorax 31.7 documentation + composer.cli.utilities — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/http_client.html b/_modules/composer/http_client.html index fe5d2c2f..b5090db2 100644 --- a/_modules/composer/http_client.html +++ b/_modules/composer/http_client.html @@ -8,7 +8,7 @@ - composer.http_client — Lorax 31.7 documentation + composer.http_client — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/composer/unix_socket.html b/_modules/composer/unix_socket.html index 82b5ce57..c423fdea 100644 --- a/_modules/composer/unix_socket.html +++ b/_modules/composer/unix_socket.html @@ -8,7 +8,7 @@ - composer.unix_socket — Lorax 31.7 documentation + composer.unix_socket — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
diff --git a/_modules/index.html b/_modules/index.html index 27d09710..9cc1f9f4 100644 --- a/_modules/index.html +++ b/_modules/index.html @@ -8,7 +8,7 @@ - Overview: module code — Lorax 31.7 documentation + Overview: module code — Lorax 31.9 documentation @@ -58,7 +58,7 @@
- 31.7 + 31.9
@@ -169,7 +169,6 @@
  • pylorax.api.cmdline
  • pylorax.api.compose
  • pylorax.api.config
  • -
  • pylorax.api.crossdomain
  • pylorax.api.dnfbase
  • pylorax.api.flask_blueprint
  • pylorax.api.gitrpm
  • diff --git a/_modules/pylorax.html b/_modules/pylorax.html index 2de1ea99..ef603ccc 100644 --- a/_modules/pylorax.html +++ b/_modules/pylorax.html @@ -8,7 +8,7 @@ - pylorax — Lorax 31.7 documentation + pylorax — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/bisect.html b/_modules/pylorax/api/bisect.html index c3da94d4..a447ead6 100644 --- a/_modules/pylorax/api/bisect.html +++ b/_modules/pylorax/api/bisect.html @@ -8,7 +8,7 @@ - pylorax.api.bisect — Lorax 31.7 documentation + pylorax.api.bisect — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/checkparams.html b/_modules/pylorax/api/checkparams.html index c178c288..4b614adf 100644 --- a/_modules/pylorax/api/checkparams.html +++ b/_modules/pylorax/api/checkparams.html @@ -8,7 +8,7 @@ - pylorax.api.checkparams — Lorax 31.7 documentation + pylorax.api.checkparams — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/cmdline.html b/_modules/pylorax/api/cmdline.html index 28e246c3..3fa34eab 100644 --- a/_modules/pylorax/api/cmdline.html +++ b/_modules/pylorax/api/cmdline.html @@ -8,7 +8,7 @@ - pylorax.api.cmdline — Lorax 31.7 documentation + pylorax.api.cmdline — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/compose.html b/_modules/pylorax/api/compose.html index 0263abb1..9da3992e 100644 --- a/_modules/pylorax/api/compose.html +++ b/_modules/pylorax/api/compose.html @@ -8,7 +8,7 @@ - pylorax.api.compose — Lorax 31.7 documentation + pylorax.api.compose — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -1056,6 +1056,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "live-iso": {"make_iso": True, "make_disk": False, @@ -1083,6 +1084,7 @@ "app_file": None, "iso_only": True, "iso_name": "live.iso", + "squashfs_only": False, }, "partitioned-disk": {"make_iso": False, "make_disk": True, @@ -1108,6 +1110,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "qcow2": {"make_iso": False, "make_disk": True, @@ -1133,6 +1136,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "ext4-filesystem": {"make_iso": False, "make_disk": False, @@ -1158,6 +1162,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "ami": {"make_iso": False, "make_disk": True, @@ -1183,6 +1188,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "vhd": {"make_iso": False, "make_disk": True, @@ -1208,6 +1214,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "vmdk": {"make_iso": False, "make_disk": True, @@ -1233,6 +1240,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "openstack": {"make_iso": False, "make_disk": True, @@ -1258,6 +1266,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "google": {"make_iso": False, "make_disk": True, @@ -1285,6 +1294,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "hyper-v": {"make_iso": False, "make_disk": True, @@ -1310,6 +1320,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, "alibaba": {"make_iso": False, "make_disk": True, @@ -1335,6 +1346,7 @@ "app_name": None, "app_template": None, "app_file": None, + "squashfs_only": False, }, } return _MAP[compose_type] diff --git a/_modules/pylorax/api/config.html b/_modules/pylorax/api/config.html index 9ce6db40..2893839b 100644 --- a/_modules/pylorax/api/config.html +++ b/_modules/pylorax/api/config.html @@ -8,7 +8,7 @@ - pylorax.api.config — Lorax 31.7 documentation + pylorax.api.config — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/dnfbase.html b/_modules/pylorax/api/dnfbase.html index 9c845149..a7a85993 100644 --- a/_modules/pylorax/api/dnfbase.html +++ b/_modules/pylorax/api/dnfbase.html @@ -8,7 +8,7 @@ - pylorax.api.dnfbase — Lorax 31.7 documentation + pylorax.api.dnfbase — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/flask_blueprint.html b/_modules/pylorax/api/flask_blueprint.html index dac7e472..c91725b2 100644 --- a/_modules/pylorax/api/flask_blueprint.html +++ b/_modules/pylorax/api/flask_blueprint.html @@ -8,7 +8,7 @@ - pylorax.api.flask_blueprint — Lorax 31.7 documentation + pylorax.api.flask_blueprint — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/gitrpm.html b/_modules/pylorax/api/gitrpm.html index a38d2179..a1d68349 100644 --- a/_modules/pylorax/api/gitrpm.html +++ b/_modules/pylorax/api/gitrpm.html @@ -8,7 +8,7 @@ - pylorax.api.gitrpm — Lorax 31.7 documentation + pylorax.api.gitrpm — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -218,7 +218,7 @@ cmd = ["git", "clone", self._gitRepo["repo"], joinpaths(sourcesDir, "gitrepo")] log.debug(cmd) try: - subprocess.check_output(cmd) + subprocess.check_output(cmd, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: log.error("Failed to clone %s: %s", self._gitRepo["repo"], e.output) raise RuntimeError("Failed to clone %s" % self._gitRepo["repo"]) @@ -235,10 +235,11 @@ cmd = ["git", "archive", "--prefix", self._gitRepo["rpmname"] + "/", "-o", joinpaths(sourcesDir, self.sourceName), self._gitRepo["ref"]] log.debug(cmd) try: - subprocess.check_output(cmd) + subprocess.check_output(cmd, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: log.error("Failed to archive %s: %s", self._gitRepo["repo"], e.output) - raise RuntimeError("Failed to clone %s" % self._gitRepo["repo"]) + raise RuntimeError('Failed to archive %s from ref "%s"' % (self._gitRepo["repo"], + self._gitRepo["ref"])) finally: # Cleanup even if there was an error os.chdir(oldcwd) @@ -371,7 +372,7 @@ cmd = ["createrepo_c", gitrepo] log.debug(cmd) try: - subprocess.check_output(cmd) + subprocess.check_output(cmd, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: log.error("Failed to create repo at %s: %s", gitrepo, e.output) raise RuntimeError("Failed to create repo at %s" % gitrepo) diff --git a/_modules/pylorax/api/projects.html b/_modules/pylorax/api/projects.html index dd023df5..985b3234 100644 --- a/_modules/pylorax/api/projects.html +++ b/_modules/pylorax/api/projects.html @@ -8,7 +8,7 @@ - pylorax.api.projects — Lorax 31.7 documentation + pylorax.api.projects — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -562,6 +562,9 @@ if repo.gpgkey: repo_str += "gpgkey = %s\n" % ",".join(repo.gpgkey) + if repo.skip_if_unavailable: + repo_str += "skip_if_unavailable=1\n" + return repo_str
    [docs]def repo_to_source(repo, system_source): diff --git a/_modules/pylorax/api/queue.html b/_modules/pylorax/api/queue.html index f23d4774..7ee7a36b 100644 --- a/_modules/pylorax/api/queue.html +++ b/_modules/pylorax/api/queue.html @@ -8,7 +8,7 @@ - pylorax.api.queue — Lorax 31.7 documentation + pylorax.api.queue — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -174,6 +174,8 @@ """ Functions to monitor compose queue and run anaconda""" import logging log = logging.getLogger("pylorax") +program_log = logging.getLogger("program") +dnf_log = logging.getLogger("dnf") import os import grp @@ -192,7 +194,7 @@ import pylorax.api.toml as toml from pylorax.base import DataHolder from pylorax.creator import run_creator -from pylorax.sysutils import joinpaths +from pylorax.sysutils import joinpaths, read_tail
    [docs]def check_queues(cfg): """Check to make sure the new and run queue symlinks are correct @@ -294,6 +296,23 @@ # The symlink may vanish if uuid_cancel() has been called continue + # The anaconda logs are also copied into ./anaconda/ in this directory + os.makedirs(joinpaths(dst, "logs"), exist_ok=True) + + def open_handler(loggers, file_name): + handler = logging.FileHandler(joinpaths(dst, "logs", file_name)) + handler.setLevel(logging.DEBUG) + handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s: %(message)s")) + for logger in loggers: + logger.addHandler(handler) + return (handler, loggers) + + loggers = (((log, program_log, dnf_log), "combined.log"), + ((log,), "composer.log"), + ((program_log,), "program.log"), + ((dnf_log,), "dnf.log")) + handlers = [open_handler(loggers, file_name) for loggers, file_name in loggers] + log.info("Starting new compose: %s", dst) open(joinpaths(dst, "STATUS"), "w").write("RUNNING\n") @@ -310,6 +329,11 @@ # log.error("Error running compose: %s", e) open(joinpaths(dst, "STATUS"), "w").write("FAILED\n") write_timestamp(dst, TS_FINISHED) + finally: + for handler, loggers in handlers: + for logger in loggers: + logger.removeHandler(handler) + handler.close() os.unlink(dst)
    @@ -337,11 +361,6 @@ if not os.path.exists(ks_path): raise RuntimeError("Missing kickstart file at %s" % ks_path) - # The anaconda logs are copied into ./anaconda/ in this directory - log_dir = joinpaths(results_dir, "logs/") - if not os.path.exists(log_dir): - os.makedirs(log_dir) - # Load the compose configuration cfg_path = joinpaths(results_dir, "config.toml") if not os.path.exists(cfg_path): @@ -789,20 +808,23 @@ return (image_name, joinpaths(uuid_dir, image_name))
    [docs]def uuid_log(cfg, uuid, size=1024): - """Return `size` kbytes from the end of the anaconda.log + """Return `size` KiB from the end of the most currently relevant log for a + given compose :param cfg: Configuration settings :type cfg: ComposerConfig :param uuid: The UUID of the build :type uuid: str - :param size: Number of kbytes to read. Default is 1024 + :param size: Number of KiB to read. Default is 1024 :type size: int - :returns: Up to `size` kbytes from the end of the log + :returns: Up to `size` KiB from the end of the log :rtype: str :raises: RuntimeError if there was a problem (eg. no log file available) - This function tries to return lines from the end of the log, it will - attempt to start on a line boundry, and may return less than `size` kbytes. + This function will return the end of either the anaconda log, the packaging + log, or the combined composer logs, depending on the progress of the + compose. It tries to return lines from the end of the log, it will attempt + to start on a line boundary, and it may return less than `size` kbytes. """ uuid_dir = joinpaths(cfg.get("composer", "lib_dir"), "results", uuid) if not os.path.exists(uuid_dir): @@ -814,23 +836,32 @@ if status is None: raise RuntimeError("Status is missing for %s" % uuid) - if status["queue_status"] == "RUNNING": - log_path = "/tmp/anaconda.log" - else: - log_path = joinpaths(uuid_dir, "logs", "anaconda", "anaconda.log") - if not os.path.exists(log_path): - raise RuntimeError("No anaconda.log available.") - - with open(log_path, "r") as f: - f.seek(0, 2) - end = f.tell() - if end < 1024 * size: - f.seek(0, 0) - else: - f.seek(end - (1024 * size)) - # Find the start of the next line and return the rest - f.readline() - return f.read()
    + def get_log_path(): + # Try to return the most relevant log at any given time during the + # compose. If the compose is not running, return the composer log. + anaconda_log = "/tmp/anaconda.log" + packaging_log = "/tmp/packaging.log" + combined_log = joinpaths(uuid_dir, "logs", "combined.log") + if status["queue_status"] != "RUNNING" or not os.path.isfile(anaconda_log): + return combined_log + if not os.path.isfile(packaging_log): + return anaconda_log + try: + anaconda_mtime = os.stat(anaconda_log).st_mtime + packaging_mtime = os.stat(packaging_log).st_mtime + # If the packaging log exists and its last message is at least 15 + # seconds newer than the anaconda log, return the packaging log. + if packaging_mtime > anaconda_mtime + 15: + return packaging_log + return anaconda_log + except OSError: + # Return the combined log if anaconda_log or packaging_log disappear + return combined_log + try: + tail = read_tail(get_log_path(), size) + except OSError as e: + raise RuntimeError("No log available.") from e + return tail diff --git a/_modules/pylorax/api/recipes.html b/_modules/pylorax/api/recipes.html index eeba82f8..14e6bac0 100644 --- a/_modules/pylorax/api/recipes.html +++ b/_modules/pylorax/api/recipes.html @@ -8,7 +8,7 @@ - pylorax.api.recipes — Lorax 31.7 documentation + pylorax.api.recipes — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -427,6 +427,153 @@ recipe_dict = toml.loads(recipe_str) return recipe_from_dict(recipe_dict) +
    [docs]def check_required_list(lst, fields): + """Check a list of dicts for required fields + + :param lst: A list of dicts with fields + :type lst: list of dict + :param fields: A list of field name strings + :type fields: list of str + :returns: A list of error strings + :rtype: list of str + """ + errors = [] + for i, m in enumerate(lst): + m_errs = [] + errors.extend(check_list_case(fields, m.keys(), prefix="%d " % (i+1))) + for f in fields: + if f not in m: + m_errs.append("'%s'" % f) + if m_errs: + errors.append("%d is missing %s" % (i+1, ", ".join(m_errs))) + return errors
    + +
    [docs]def check_list_case(expected_keys, recipe_keys, prefix=""): + """Check the case of the recipe keys + + :param expected_keys: A list of expected key strings + :type expected_keys: list of str + :param recipe_keys: A list of the recipe's key strings + :type recipe_keys: list of str + :returns: list of errors + :rtype: list of str + """ + errors = [] + for k in recipe_keys: + if k in expected_keys: + continue + if k.lower() in expected_keys: + errors.append(prefix + "%s should be %s" % (k, k.lower())) + return errors
    + +
    [docs]def check_recipe_dict(recipe_dict): + """Check a dict before using it to create a new Recipe + + :param recipe_dict: A plain dict of the recipe + :type recipe_dict: dict + :returns: True if dict is ok + :rtype: bool + :raises: RecipeError + + This checks a dict to make sure required fields are present, + that optional fields are correct, and that other optional fields + are of the correct format, when included. + + This collects all of the errors and returns a single RecipeError with + a string that can be presented to users. + """ + errors = [] + + # Check for wrong case of top level keys + top_keys = ["name", "description", "version", "modules", "packages", "groups", "repos", "customizations"] + errors.extend(check_list_case(recipe_dict.keys(), top_keys)) + + if "name" not in recipe_dict: + errors.append("Missing 'name'") + if "description" not in recipe_dict: + errors.append("Missing 'description'") + if "version" in recipe_dict: + try: + semver.Version(recipe_dict["version"]) + except ValueError: + errors.append("Invalid 'version', must use Semantic Versioning") + + # Examine all the modules + if recipe_dict.get("modules"): + module_errors = check_required_list(recipe_dict["modules"], ["name", "version"]) + if module_errors: + errors.append("'modules' errors:\n%s" % "\n".join(module_errors)) + + # Examine all the packages + if recipe_dict.get("packages"): + package_errors = check_required_list(recipe_dict["packages"], ["name", "version"]) + if package_errors: + errors.append("'packages' errors:\n%s" % "\n".join(package_errors)) + + if recipe_dict.get("groups"): + groups_errors = check_required_list(recipe_dict["groups"], ["name"]) + if groups_errors: + errors.append("'groups' errors:\n%s" % "\n".join(groups_errors)) + + if recipe_dict.get("repos") and recipe_dict.get("repos").get("git"): + repos_errors = check_required_list(recipe_dict.get("repos").get("git"), + ["rpmname", "rpmversion", "rpmrelease", "summary", "repo", "ref", "destination"]) + if repos_errors: + errors.append("'repos.git' errors:\n%s" % "\n".join(repos_errors)) + + # No customizations to check, exit now + c = recipe_dict.get("customizations") + if not c: + return errors + + # Make sure to catch empty sections by testing for keywords, not just looking at .get() result. + if "kernel" in c: + errors.extend(check_list_case(["append"], c["kernel"].keys(), prefix="kernel ")) + if "append" not in c.get("kernel", []): + errors.append("'customizations.kernel': missing append field.") + + if "sshkey" in c: + sshkey_errors = check_required_list(c.get("sshkey"), ["user", "key"]) + if sshkey_errors: + errors.append("'customizations.sshkey' errors:\n%s" % "\n".join(sshkey_errors)) + + if "user" in c: + user_errors = check_required_list(c.get("user"), ["name"]) + if user_errors: + errors.append("'customizations.user' errors:\n%s" % "\n".join(user_errors)) + + if "group" in c: + group_errors = check_required_list(c.get("group"), ["name"]) + if group_errors: + errors.append("'customizations.group' errors:\n%s" % "\n".join(group_errors)) + + if "timezone" in c: + errors.extend(check_list_case(["timezone", "ntpservers"], c["timezone"].keys(), prefix="timezone ")) + if not c.get("timezone"): + errors.append("'customizations.timezone': missing timezone or ntpservers fields.") + + if "locale" in c: + errors.extend(check_list_case(["languages", "keyboard"], c["locale"].keys(), prefix="locale ")) + if not c.get("locale"): + errors.append("'customizations.locale': missing languages or keyboard fields.") + + if "firewall" in c: + errors.extend(check_list_case(["ports"], c["firewall"].keys(), prefix="firewall ")) + if not c.get("firewall"): + errors.append("'customizations.firewall': missing ports field or services section.") + + if "services" in c.get("firewall", []): + errors.extend(check_list_case(["enabled", "disabled"], c["firewall"]["services"].keys(), prefix="firewall.services ")) + if not c.get("firewall").get("services"): + errors.append("'customizations.firewall.services': missing enabled or disabled fields.") + + if "services" in c: + errors.extend(check_list_case(["enabled", "disabled"], c["services"].keys(), prefix="services ")) + if not c.get("services"): + errors.append("'customizations.services': missing enabled or disabled fields.") + + return errors
    +
    [docs]def recipe_from_dict(recipe_dict): """Create a Recipe object from a plain dict. @@ -436,6 +583,11 @@ :rtype: Recipe :raises: RecipeError """ + errors = check_recipe_dict(recipe_dict) + if errors: + msg = "\n".join(errors) + raise RecipeError(msg) + # Make RecipeModule objects from the toml # The TOML may not have modules or packages in it. Set them to None in this case try: diff --git a/_modules/pylorax/api/server.html b/_modules/pylorax/api/server.html index 44fa94e0..1846b11d 100644 --- a/_modules/pylorax/api/server.html +++ b/_modules/pylorax/api/server.html @@ -8,7 +8,7 @@ - pylorax.api.server — Lorax 31.7 documentation + pylorax.api.server — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/timestamp.html b/_modules/pylorax/api/timestamp.html index 5ccc9314..a8909dd8 100644 --- a/_modules/pylorax/api/timestamp.html +++ b/_modules/pylorax/api/timestamp.html @@ -8,7 +8,7 @@ - pylorax.api.timestamp — Lorax 31.7 documentation + pylorax.api.timestamp — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/api/toml.html b/_modules/pylorax/api/toml.html index b6537cc9..2d94f9f0 100644 --- a/_modules/pylorax/api/toml.html +++ b/_modules/pylorax/api/toml.html @@ -8,7 +8,7 @@ - pylorax.api.toml — Lorax 31.7 documentation + pylorax.api.toml — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -187,7 +187,8 @@ raise TomlError(e.msg, e.doc, e.pos)
    [docs]def dumps(o): - return toml.dumps(o, encoder=toml.TomlEncoder(dict))
    + # strip the result, because `toml.dumps` adds a lot of newlines + return toml.dumps(o, encoder=toml.TomlEncoder(dict)).strip() diff --git a/_modules/pylorax/api/v0.html b/_modules/pylorax/api/v0.html index f7f8adb2..cda9f971 100644 --- a/_modules/pylorax/api/v0.html +++ b/_modules/pylorax/api/v0.html @@ -8,7 +8,7 @@ - pylorax.api.v0 — Lorax 31.7 documentation + pylorax.api.v0 — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -226,7 +226,7 @@ from pylorax.api.recipes import RecipeError, list_branch_files, read_recipe_commit, recipe_filename, list_commits from pylorax.api.recipes import recipe_from_dict, recipe_from_toml, commit_recipe, delete_recipe, revert_recipe from pylorax.api.recipes import tag_recipe_commit, recipe_diff, RecipeFileError -from pylorax.api.regexes import VALID_API_STRING +from pylorax.api.regexes import VALID_API_STRING, VALID_BLUEPRINT_NAME import pylorax.api.toml as toml from pylorax.api.workspace import workspace_read, workspace_write, workspace_delete @@ -369,7 +369,7 @@ "blueprints": [] } """ - if VALID_API_STRING.match(blueprint_names) is None: + if any(VALID_BLUEPRINT_NAME.match(blueprint_name) is None for blueprint_name in blueprint_names.split(',')): return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -502,7 +502,7 @@ ] } """ - if VALID_API_STRING.match(blueprint_names) is None: + if any(VALID_BLUEPRINT_NAME.match(blueprint_name) is None for blueprint_name in blueprint_names.split(',')): return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -560,7 +560,7 @@ else: blueprint = recipe_from_dict(request.get_json(cache=False)) - if VALID_API_STRING.match(blueprint["name"]) is None: + if VALID_BLUEPRINT_NAME.match(blueprint["name"]) is None: return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 with api.config["GITLOCK"].lock: @@ -591,7 +591,7 @@ The response will be a status response with `status` set to true, or an error response with it set to false and an error message included. """ - if VALID_API_STRING.match(blueprint_name) is None: + if VALID_BLUEPRINT_NAME.match(blueprint_name) is None: return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -634,7 +634,7 @@ else: blueprint = recipe_from_dict(request.get_json(cache=False)) - if VALID_API_STRING.match(blueprint["name"]) is None: + if VALID_BLUEPRINT_NAME.match(blueprint["name"]) is None: return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 with api.config["GITLOCK"].lock: @@ -660,7 +660,7 @@ The response will be a status response with `status` set to true, or an error response with it set to false and an error message included. """ - if VALID_API_STRING.match(blueprint_name) is None: + if VALID_BLUEPRINT_NAME.match(blueprint_name) is None: return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -692,7 +692,7 @@ The response will be a status response with `status` set to true, or an error response with it set to false and an error message included. """ - if VALID_API_STRING.match(blueprint_name) is None: + if VALID_BLUEPRINT_NAME.match(blueprint_name) is None: return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -728,7 +728,7 @@ The response will be a status response with `status` set to true, or an error response with it set to false and an error message included. """ - if VALID_API_STRING.match(blueprint_name) is None: + if VALID_BLUEPRINT_NAME.match(blueprint_name) is None: return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -892,7 +892,7 @@ ] } """ - if VALID_API_STRING.match(blueprint_names) is None: + if any(VALID_BLUEPRINT_NAME.match(blueprint_name) is None for blueprint_name in blueprint_names.split(',')): return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -1033,7 +1033,7 @@ ] } """ - if VALID_API_STRING.match(blueprint_names) is None: + if any(VALID_BLUEPRINT_NAME.match(blueprint_name) is None for blueprint_name in blueprint_names.split(',')): return jsonify(status=False, errors=[{"id": INVALID_CHARS, "msg": "Invalid characters in API path"}]), 400 branch = request.args.get("branch", "master") @@ -1678,7 +1678,7 @@ else: compose_type = compose["compose_type"] - if VALID_API_STRING.match(blueprint_name) is None: + if VALID_BLUEPRINT_NAME.match(blueprint_name) is None: errors.append({"id": INVALID_CHARS, "msg": "Invalid characters in API path"}) if not blueprint_exists(branch, blueprint_name): @@ -2164,13 +2164,15 @@ @v0_api.route("/compose/log/<uuid>") @checkparams([("uuid","", "no UUID given")]) def v0_compose_log_tail(uuid): - """Return the end of the main anaconda.log, defaults to 1Mbytes + """Return the tail of the most currently relevant log - **/api/v0/compose/log/<uuid>[?size=kbytes]** + **/api/v0/compose/log/<uuid>[?size=KiB]** - Returns the end of the anaconda.log. The size parameter is optional and defaults to 1Mbytes - if it is not included. The returned data is raw text from the end of the logfile, starting on - a line boundry. + Returns the end of either the anaconda log, the packaging log, or the + composer logs, depending on the progress of the compose. The size + parameter is optional and defaults to 1 MiB if it is not included. The + returned data is raw text from the end of the log file, starting on a + line boundary. Example:: diff --git a/_modules/pylorax/api/workspace.html b/_modules/pylorax/api/workspace.html index aafb695e..c0b41f5a 100644 --- a/_modules/pylorax/api/workspace.html +++ b/_modules/pylorax/api/workspace.html @@ -8,7 +8,7 @@ - pylorax.api.workspace — Lorax 31.7 documentation + pylorax.api.workspace — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/base.html b/_modules/pylorax/base.html index fd52cdb6..7ef9769a 100644 --- a/_modules/pylorax/base.html +++ b/_modules/pylorax/base.html @@ -8,7 +8,7 @@ - pylorax.base — Lorax 31.7 documentation + pylorax.base — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/buildstamp.html b/_modules/pylorax/buildstamp.html index 83d3291f..1f250e51 100644 --- a/_modules/pylorax/buildstamp.html +++ b/_modules/pylorax/buildstamp.html @@ -8,7 +8,7 @@ - pylorax.buildstamp — Lorax 31.7 documentation + pylorax.buildstamp — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/cmdline.html b/_modules/pylorax/cmdline.html index 4eddcd80..7742fa0a 100644 --- a/_modules/pylorax/cmdline.html +++ b/_modules/pylorax/cmdline.html @@ -8,7 +8,7 @@ - pylorax.cmdline — Lorax 31.7 documentation + pylorax.cmdline — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -461,6 +461,8 @@ parser.add_argument("--releasever", default="29", help="substituted for @VERSION@ in bootloader config files") parser.add_argument("--volid", default=None, help="volume id") + parser.add_argument("--squashfs-only", action="store_true", default=False, + help="Use a plain squashfs filesystem for the runtime.") parser.add_argument("--squashfs_args", help="additional squashfs args") parser.add_argument("--timeout", default=None, type=int, diff --git a/_modules/pylorax/creator.html b/_modules/pylorax/creator.html index 1f1f040d..52e1426c 100644 --- a/_modules/pylorax/creator.html +++ b/_modules/pylorax/creator.html @@ -8,7 +8,7 @@ - pylorax.creator — Lorax 31.7 documentation + pylorax.creator — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -354,15 +354,17 @@ product = DataHolder(name=opts.project, version=opts.releasever, release="", variant="", bugurl="", isfinal=False) - # This is a mounted image partition, cannot hardlink to it, so just use it - # symlink mount_dir/images to work_dir/images so we don't run out of space - os.makedirs(joinpaths(work_dir, "images")) - rb = RuntimeBuilder(product, arch, fake_dbo) compression, compressargs = squashfs_args(opts) - log.info("Creating runtime") - rb.create_ext4_runtime(joinpaths(work_dir, RUNTIME), size=size, - compression=compression, compressargs=compressargs) + + if opts.squashfs_only: + log.info("Creating a squashfs only runtime") + rb.create_squashfs_runtime(joinpaths(work_dir, RUNTIME), size=size, + compression=compression, compressargs=compressargs) + else: + log.info("Creating a squashfs+ext4 runtime") + rb.create_ext4_runtime(joinpaths(work_dir, RUNTIME), size=size, + compression=compression, compressargs=compressargs)
    [docs]def rebuild_initrds_for_live(opts, sys_root_dir, results_dir): @@ -493,8 +495,10 @@ # Link /images to work_dir/images to make the templates happy if os.path.islink(joinpaths(mount_dir, "images")): os.unlink(joinpaths(mount_dir, "images")) - execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "images"), - joinpaths(mount_dir, "images")]) + rc = execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "images"), + joinpaths(mount_dir, "images")]) + if rc: + raise RuntimeError("Failed to symlink images from mount_dir to work_dir") # The templates expect the config files to be in /tmp/config_files # I think these should be release specific, not from lorax, but for now @@ -559,43 +563,6 @@ remove(tmp_mount_dir) return sysroot_boot_dir
    -
    [docs]def make_squashfs(opts, disk_img, work_dir): - """ - Create a squashfs image of an unpartitioned filesystem disk image - - :param str disk_img: Path to the unpartitioned filesystem disk image - :param str work_dir: Output compressed image to work_dir+images/install.img - :param str compression: Compression type to use - :returns: True if squashfs creation was successful. False if there was an error. - :rtype: bool - - Take disk_img and put it into LiveOS/rootfs.img and squashfs this - tree into work_dir+images/install.img - - fsck.ext4 is run on the disk image to make sure there are no errors and to zero - out any deleted blocks to make it compress better. If this fails for any reason - it will return False and log the error. - """ - # Make sure free blocks are actually zeroed so it will compress - rc = execWithRedirect("/usr/sbin/fsck.ext4", ["-y", "-f", "-E", "discard", disk_img]) - if rc != 0: - log.error("Problem zeroing free blocks of %s", disk_img) - return False - - liveos_dir = joinpaths(work_dir, "runtime/LiveOS") - os.makedirs(liveos_dir) - os.makedirs(os.path.dirname(joinpaths(work_dir, RUNTIME))) - - rc = execWithRedirect("/bin/ln", [disk_img, joinpaths(liveos_dir, "rootfs.img")]) - if rc != 0: - shutil.copy2(disk_img, joinpaths(liveos_dir, "rootfs.img")) - - compression, compressargs = squashfs_args(opts) - mksquashfs(joinpaths(work_dir, "runtime"), - joinpaths(work_dir, RUNTIME), compression, compressargs) - remove(joinpaths(work_dir, "runtime")) - return True
    -
    [docs]def calculate_disk_size(opts, ks): """ Calculate the disk size from the kickstart @@ -872,15 +839,13 @@ if (opts.fs_image or opts.no_virt) and not opts.disk_image: # Create iso from a filesystem image disk_img = opts.fs_image or disk_img - - if not make_squashfs(opts, disk_img, work_dir): - log.error("squashfs.img creation failed") - raise RuntimeError("squashfs.img creation failed") - - if cancel_func and cancel_func(): - raise RuntimeError("ISO creation canceled") - with Mount(disk_img, opts="loop") as mount_dir: + # TODO check rc + make_runtime(opts, mount_dir, work_dir, calculate_disk_size(opts, ks)/1024.0) + + if cancel_func and cancel_func(): + raise RuntimeError("ISO creation canceled") + result_dir = make_livecd(opts, mount_dir, work_dir) else: # Create iso from a partitioned disk image diff --git a/_modules/pylorax/decorators.html b/_modules/pylorax/decorators.html index 8a38c35c..f5f3faca 100644 --- a/_modules/pylorax/decorators.html +++ b/_modules/pylorax/decorators.html @@ -8,7 +8,7 @@ - pylorax.decorators — Lorax 31.7 documentation + pylorax.decorators — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/discinfo.html b/_modules/pylorax/discinfo.html index 01ae6c20..be6b360f 100644 --- a/_modules/pylorax/discinfo.html +++ b/_modules/pylorax/discinfo.html @@ -8,7 +8,7 @@ - pylorax.discinfo — Lorax 31.7 documentation + pylorax.discinfo — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/dnfbase.html b/_modules/pylorax/dnfbase.html index d9b611c6..140b56fe 100644 --- a/_modules/pylorax/dnfbase.html +++ b/_modules/pylorax/dnfbase.html @@ -8,7 +8,7 @@ - pylorax.dnfbase — Lorax 31.7 documentation + pylorax.dnfbase — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/dnfhelper.html b/_modules/pylorax/dnfhelper.html index ccd3c52b..bc22d1b9 100644 --- a/_modules/pylorax/dnfhelper.html +++ b/_modules/pylorax/dnfhelper.html @@ -8,7 +8,7 @@ - pylorax.dnfhelper — Lorax 31.7 documentation + pylorax.dnfhelper — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/executils.html b/_modules/pylorax/executils.html index 432997f1..967bdfab 100644 --- a/_modules/pylorax/executils.html +++ b/_modules/pylorax/executils.html @@ -8,7 +8,7 @@ - pylorax.executils — Lorax 31.7 documentation + pylorax.executils — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/imgutils.html b/_modules/pylorax/imgutils.html index cc23d3fd..9350f261 100644 --- a/_modules/pylorax/imgutils.html +++ b/_modules/pylorax/imgutils.html @@ -8,7 +8,7 @@ - pylorax.imgutils — Lorax 31.7 documentation + pylorax.imgutils — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/installer.html b/_modules/pylorax/installer.html index d357cf20..0fdb0aaa 100644 --- a/_modules/pylorax/installer.html +++ b/_modules/pylorax/installer.html @@ -8,7 +8,7 @@ - pylorax.installer — Lorax 31.7 documentation + pylorax.installer — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/ltmpl.html b/_modules/pylorax/ltmpl.html index c295fc9d..32712ccf 100644 --- a/_modules/pylorax/ltmpl.html +++ b/_modules/pylorax/ltmpl.html @@ -8,7 +8,7 @@ - pylorax.ltmpl — Lorax 31.7 documentation + pylorax.ltmpl — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/monitor.html b/_modules/pylorax/monitor.html index 0798fe6e..c21b45ce 100644 --- a/_modules/pylorax/monitor.html +++ b/_modules/pylorax/monitor.html @@ -8,7 +8,7 @@ - pylorax.monitor — Lorax 31.7 documentation + pylorax.monitor — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/mount.html b/_modules/pylorax/mount.html index ae4c9d9b..c34e4d59 100644 --- a/_modules/pylorax/mount.html +++ b/_modules/pylorax/mount.html @@ -8,7 +8,7 @@ - pylorax.mount — Lorax 31.7 documentation + pylorax.mount — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -217,7 +217,8 @@ self.mount_dir = self.initrd_path kernel_list = [("/isolinux/vmlinuz", "/isolinux/initrd.img"), - ("/ppc/ppc64/vmlinuz", "/ppc/ppc64/initrd.img")] + ("/ppc/ppc64/vmlinuz", "/ppc/ppc64/initrd.img"), + ("/images/pxeboot/vmlinuz", "/images/pxeboot/initrd.img")] if os.path.isdir(self.mount_dir+"/repodata"): self.repo = self.mount_dir diff --git a/_modules/pylorax/sysutils.html b/_modules/pylorax/sysutils.html index dd91d76e..789a6bca 100644 --- a/_modules/pylorax/sysutils.html +++ b/_modules/pylorax/sysutils.html @@ -8,7 +8,7 @@ - pylorax.sysutils — Lorax 31.7 documentation + pylorax.sysutils — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    @@ -159,7 +159,7 @@ # # sysutils.py # -# Copyright (C) 2009-2015 Red Hat, Inc. +# Copyright (C) 2009-2019 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -288,6 +288,34 @@ config = UnquotingConfigParser() config.read_string(conftext) return config['main'] + +def read_tail(path, size): + """Read up to `size` kibibytes from the end of a file""" + + # NOTE: In py3 text files are unicode, not bytes so we have to open it as bytes + with open(path, "rb") as f: + return _read_file_end(f, size) + +def _read_file_end(f, size): + """Read the end of a file + + This skips to the next line to avoid starting in the middle of a unicode character. + And returns "" in the case of a UnicodeDecodeError + """ + f.seek(0, 2) + end = f.tell() + if end < 1024 * size: + f.seek(0, 0) + else: + f.seek(end - (1024 * size)) + data = f.read() + try: + # Find the first newline in the block + newline = min(1+data.find(b'\n'), len(data)) + text = data[newline:].decode("UTF-8") + except UnicodeDecodeError: + return "" + return text
    diff --git a/_modules/pylorax/treebuilder.html b/_modules/pylorax/treebuilder.html index f8809561..81fc62c4 100644 --- a/_modules/pylorax/treebuilder.html +++ b/_modules/pylorax/treebuilder.html @@ -8,7 +8,7 @@ - pylorax.treebuilder — Lorax 31.7 documentation + pylorax.treebuilder — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_modules/pylorax/treeinfo.html b/_modules/pylorax/treeinfo.html index 2be5067e..08d15fca 100644 --- a/_modules/pylorax/treeinfo.html +++ b/_modules/pylorax/treeinfo.html @@ -8,7 +8,7 @@ - pylorax.treeinfo — Lorax 31.7 documentation + pylorax.treeinfo — Lorax 31.9 documentation @@ -58,7 +58,7 @@
    - 31.7 + 31.9
    diff --git a/_sources/composer.cli.rst.txt b/_sources/composer.cli.rst.txt index 81a5776f..50ff52f2 100644 --- a/_sources/composer.cli.rst.txt +++ b/_sources/composer.cli.rst.txt @@ -8,79 +8,79 @@ composer.cli.blueprints module ------------------------------ .. automodule:: composer.cli.blueprints - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.cmdline module --------------------------- .. automodule:: composer.cli.cmdline - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.compose module --------------------------- .. automodule:: composer.cli.compose - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.help module ------------------------ .. automodule:: composer.cli.help - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.modules module --------------------------- .. automodule:: composer.cli.modules - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.projects module ---------------------------- .. automodule:: composer.cli.projects - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.sources module --------------------------- .. automodule:: composer.cli.sources - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.status module -------------------------- .. automodule:: composer.cli.status - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.cli.utilities module ----------------------------- .. automodule:: composer.cli.utilities - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: Module contents --------------- .. automodule:: composer.cli - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/composer.rst.txt b/_sources/composer.rst.txt index 5314fc0c..dd0c06cb 100644 --- a/_sources/composer.rst.txt +++ b/_sources/composer.rst.txt @@ -6,7 +6,7 @@ Subpackages .. toctree:: - composer.cli + composer.cli Submodules ---------- @@ -15,23 +15,23 @@ composer.http\_client module ---------------------------- .. automodule:: composer.http_client - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: composer.unix\_socket module ---------------------------- .. automodule:: composer.unix_socket - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: Module contents --------------- .. automodule:: composer - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/lorax-composer.rst.txt b/_sources/lorax-composer.rst.txt index 6e391942..e76e5668 100644 --- a/_sources/lorax-composer.rst.txt +++ b/_sources/lorax-composer.rst.txt @@ -336,7 +336,7 @@ file accepted by ``systemctl enable`` eg. ``cockpit.socket``:: [[repos.git]] ~~~~~~~~~~~~~ -The ``[[repos.git]]`` entries are used to add files from a `git repository` +The ``[[repos.git]]`` entries are used to add files from a `git repository `_ repository to the created image. The repository is cloned, the specified ``ref`` is checked out and an rpm is created to install the files to a ``destination`` path. The rpm includes a summary with the details of the repository and reference used to create it. The rpm is also included in the diff --git a/_sources/pylorax.api.rst.txt b/_sources/pylorax.api.rst.txt index 2891c82e..673489c2 100644 --- a/_sources/pylorax.api.rst.txt +++ b/_sources/pylorax.api.rst.txt @@ -8,151 +8,151 @@ pylorax.api.bisect module ------------------------- .. automodule:: pylorax.api.bisect - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.checkparams module ------------------------------ .. automodule:: pylorax.api.checkparams - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.cmdline module -------------------------- .. automodule:: pylorax.api.cmdline - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.compose module -------------------------- .. automodule:: pylorax.api.compose - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.config module ------------------------- .. automodule:: pylorax.api.config - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.dnfbase module -------------------------- .. automodule:: pylorax.api.dnfbase - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.errors module ------------------------- .. automodule:: pylorax.api.errors - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.flask\_blueprint module ----------------------------------- .. automodule:: pylorax.api.flask_blueprint - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.gitrpm module ------------------------- .. automodule:: pylorax.api.gitrpm - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.projects module --------------------------- .. automodule:: pylorax.api.projects - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.queue module ------------------------ .. automodule:: pylorax.api.queue - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.recipes module -------------------------- .. automodule:: pylorax.api.recipes - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.regexes module -------------------------- .. automodule:: pylorax.api.regexes - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.server module ------------------------- .. automodule:: pylorax.api.server - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.timestamp module ---------------------------- .. automodule:: pylorax.api.timestamp - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.toml module ----------------------- .. automodule:: pylorax.api.toml - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.v0 module --------------------- .. automodule:: pylorax.api.v0 - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.api.workspace module ---------------------------- .. automodule:: pylorax.api.workspace - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: Module contents --------------- .. automodule:: pylorax.api - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: diff --git a/_sources/pylorax.rst.txt b/_sources/pylorax.rst.txt index f7ac354d..2cd84475 100644 --- a/_sources/pylorax.rst.txt +++ b/_sources/pylorax.rst.txt @@ -6,7 +6,7 @@ Subpackages .. toctree:: - pylorax.api + pylorax.api Submodules ---------- @@ -15,151 +15,151 @@ pylorax.base module ------------------- .. automodule:: pylorax.base - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.buildstamp module ------------------------- .. automodule:: pylorax.buildstamp - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.cmdline module ---------------------- .. automodule:: pylorax.cmdline - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.creator module ---------------------- .. automodule:: pylorax.creator - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.decorators module ------------------------- .. automodule:: pylorax.decorators - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.discinfo module ----------------------- .. automodule:: pylorax.discinfo - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.dnfbase module ---------------------- .. automodule:: pylorax.dnfbase - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.dnfhelper module ------------------------ .. automodule:: pylorax.dnfhelper - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.executils module ------------------------ .. automodule:: pylorax.executils - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.imgutils module ----------------------- .. automodule:: pylorax.imgutils - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.installer module ------------------------ .. automodule:: pylorax.installer - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.ltmpl module -------------------- .. automodule:: pylorax.ltmpl - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.monitor module ---------------------- .. automodule:: pylorax.monitor - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.mount module -------------------- .. automodule:: pylorax.mount - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.output module --------------------- .. automodule:: pylorax.output - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.sysutils module ----------------------- .. automodule:: pylorax.sysutils - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.treebuilder module -------------------------- .. automodule:: pylorax.treebuilder - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: pylorax.treeinfo module ----------------------- .. automodule:: pylorax.treeinfo - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: Module contents --------------- .. automodule:: pylorax - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: diff --git a/_static/basic.css b/_static/basic.css index 53acd096..c41d718e 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -289,6 +289,12 @@ img.align-center, .figure.align-center, object.align-center { margin-right: auto; } +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + .align-left { text-align: left; } @@ -297,6 +303,10 @@ img.align-center, .figure.align-center, object.align-center { text-align: center; } +.align-default { + text-align: center; +} + .align-right { text-align: right; } @@ -368,6 +378,11 @@ table.align-center { margin-right: auto; } +table.align-default { + margin-left: auto; + margin-right: auto; +} + table caption span.caption-number { font-style: italic; } diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 576d0398..4aabf8d2 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '31.7', + VERSION: '31.9', LANGUAGE: 'None', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', diff --git a/_static/searchtools.js b/_static/searchtools.js index bdc27065..6031f991 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -319,12 +319,13 @@ var Search = { for (var prefix in objects) { for (var name in objects[prefix]) { var fullname = (prefix ? prefix + '.' : '') + name; - if (fullname.toLowerCase().indexOf(object) > -1) { + var fullnameLower = fullname.toLowerCase() + if (fullnameLower.indexOf(object) > -1) { var score = 0; - var parts = fullname.split('.'); + var parts = fullnameLower.split('.'); // check for different match types: exact matches of full name or // "last name" (i.e. last dotted part) - if (fullname == object || parts[parts.length - 1] == object) { + if (fullnameLower == object || parts[parts.length - 1] == object) { score += Scorer.objNameMatch; // matches in last name } else if (parts[parts.length - 1].indexOf(object) > -1) { diff --git a/composer-cli.html b/composer-cli.html index afde4f23..1e02321c 100644 --- a/composer-cli.html +++ b/composer-cli.html @@ -8,7 +8,7 @@ - composer-cli — Lorax 31.7 documentation + composer-cli — Lorax 31.9 documentation @@ -60,7 +60,7 @@
    - 31.7 + 31.9
    diff --git a/composer.cli.html b/composer.cli.html index 53bef7a5..23f2c048 100644 --- a/composer.cli.html +++ b/composer.cli.html @@ -8,7 +8,7 @@ - composer.cli package — Lorax 31.7 documentation + composer.cli package — Lorax 31.9 documentation @@ -60,7 +60,7 @@
    - 31.7 + 31.9
    @@ -184,7 +184,7 @@

    composer.cli.blueprints module¶

    -composer.cli.blueprints.blueprints_changes(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_changes(socket_path, api_version, args, show_json=False)[source]¶

    Display the changes for each of the blueprints

    Parameters
    @@ -201,7 +201,7 @@
    -composer.cli.blueprints.blueprints_cmd(opts)[source]¶
    +composer.cli.blueprints.blueprints_cmd(opts)[source]¶

    Process blueprints commands

    Parameters
    @@ -219,7 +219,7 @@
    -composer.cli.blueprints.blueprints_delete(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_delete(socket_path, api_version, args, show_json=False)[source]¶

    Delete a blueprint from the server

    Parameters
    @@ -236,7 +236,7 @@
    -composer.cli.blueprints.blueprints_depsolve(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_depsolve(socket_path, api_version, args, show_json=False)[source]¶

    Display the packages needed to install the blueprint

    Parameters
    @@ -253,7 +253,7 @@
    -composer.cli.blueprints.blueprints_diff(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_diff(socket_path, api_version, args, show_json=False)[source]¶

    Display the differences between 2 versions of a blueprint

    Parameters
    @@ -274,7 +274,7 @@
    -composer.cli.blueprints.blueprints_freeze(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_freeze(socket_path, api_version, args, show_json=False)[source]¶

    Handle the blueprints freeze commands

    Parameters
    @@ -293,7 +293,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_freeze_save(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_freeze_save(socket_path, api_version, args, show_json=False)[source]¶

    Save the frozen blueprint to a TOML file

    Parameters
    @@ -310,7 +310,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_freeze_show(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_freeze_show(socket_path, api_version, args, show_json=False)[source]¶

    Show the frozen blueprint in TOML format

    Parameters
    @@ -327,7 +327,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_list(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_list(socket_path, api_version, args, show_json=False)[source]¶

    Output the list of available blueprints

    Parameters
    @@ -344,7 +344,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_push(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_push(socket_path, api_version, args, show_json=False)[source]¶

    Push a blueprint TOML file to the server, updating the blueprint

    Parameters
    @@ -361,7 +361,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_save(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_save(socket_path, api_version, args, show_json=False)[source]¶

    Save the blueprint to a TOML file

    Parameters
    @@ -378,7 +378,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_show(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_show(socket_path, api_version, args, show_json=False)[source]¶

    Show the blueprints, in TOML format

    Parameters
    @@ -396,7 +396,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_tag(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_tag(socket_path, api_version, args, show_json=False)[source]¶

    Tag the most recent blueprint commit as a release

    Parameters
    @@ -413,7 +413,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_undo(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_undo(socket_path, api_version, args, show_json=False)[source]¶

    Undo changes to a blueprint

    Parameters
    @@ -430,7 +430,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.blueprints_workspace(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.blueprints.blueprints_workspace(socket_path, api_version, args, show_json=False)[source]¶

    Push the blueprint TOML to the temporary workspace storage

    Parameters
    @@ -447,7 +447,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.dict_names(lst)[source]¶
    +composer.cli.blueprints.dict_names(lst)[source]¶

    Return comma-separated list of the dict's name/user fields

    Parameters
    @@ -465,7 +465,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.prettyCommitDetails(change, indent=4)[source]¶
    +composer.cli.blueprints.prettyCommitDetails(change, indent=4)[source]¶

    Print the blueprint's change in a nice way

    Parameters
    @@ -479,7 +479,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.pretty_dict(d)[source]¶
    +composer.cli.blueprints.pretty_dict(d)[source]¶

    Return the dict as a human readable single line

    Parameters
    @@ -497,7 +497,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.blueprints.pretty_diff_entry(diff)[source]¶
    +composer.cli.blueprints.pretty_diff_entry(diff)[source]¶

    Generate nice diff entry string.

    Parameters
    @@ -514,7 +514,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file

    composer.cli.cmdline module¶

    -composer.cli.cmdline.composer_cli_parser()[source]¶
    +composer.cli.cmdline.composer_cli_parser()[source]¶

    Return the ArgumentParser for composer-cli

    @@ -523,7 +523,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file

    composer.cli.compose module¶

    -composer.cli.compose.compose_cancel(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_cancel(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Cancel a running compose

    Parameters
    @@ -542,7 +542,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.compose.compose_cmd(opts)[source]¶
    +composer.cli.compose.compose_cmd(opts)[source]¶

    Process compose commands

    Parameters
    @@ -560,7 +560,7 @@ blueprints freeze save <blueprint,...> Save the frozen blueprint to a file
    -composer.cli.compose.compose_delete(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_delete(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Delete a finished compose's results

    Parameters
    @@ -580,7 +580,7 @@ or failed, not a running compose.

    -composer.cli.compose.compose_image(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_image(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Download the compose's output image

    Parameters
    @@ -600,7 +600,7 @@ of compose that was selected.

    -composer.cli.compose.compose_info(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_info(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Return detailed information about the compose

    Parameters
    @@ -619,13 +619,13 @@ of compose that was selected.

    -composer.cli.compose.compose_list(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_list(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Return a simple list of compose identifiers

    -composer.cli.compose.compose_log(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_log(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Show the last part of the compose log

    Parameters
    @@ -645,7 +645,7 @@ during the build.

    -composer.cli.compose.compose_logs(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_logs(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Download a tar of the compose's logs

    Parameters
    @@ -664,7 +664,7 @@ during the build.

    -composer.cli.compose.compose_metadata(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_metadata(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Download a tar file of the compose's metadata

    Parameters
    @@ -683,7 +683,7 @@ during the build.

    -composer.cli.compose.compose_results(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_results(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Download a tar file of the compose's results

    Parameters
    @@ -703,7 +703,7 @@ It is saved as uuid.tar

    -composer.cli.compose.compose_start(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_start(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Start a new compose using the selected blueprint and type

    Parameters
    @@ -721,7 +721,7 @@ It is saved as uuid.tar

    -composer.cli.compose.compose_status(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_status(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Return the status of all known composes

    Parameters
    @@ -740,7 +740,7 @@ and failed so raw JSON output is not available.

    -composer.cli.compose.compose_types(socket_path, api_version, args, show_json=False, testmode=0)[source]¶
    +composer.cli.compose.compose_types(socket_path, api_version, args, show_json=False, testmode=0)[source]¶

    Return information about the supported compose types

    Parameters
    @@ -765,7 +765,7 @@ include this extra information.

    composer.cli.modules module¶

    -composer.cli.modules.modules_cmd(opts)[source]¶
    +composer.cli.modules.modules_cmd(opts)[source]¶

    Process modules commands

    Parameters
    @@ -785,7 +785,7 @@ include this extra information.

    composer.cli.projects module¶

    -composer.cli.projects.projects_cmd(opts)[source]¶
    +composer.cli.projects.projects_cmd(opts)[source]¶

    Process projects commands

    Parameters
    @@ -802,7 +802,7 @@ include this extra information.

    -composer.cli.projects.projects_info(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.projects.projects_info(socket_path, api_version, args, show_json=False)[source]¶

    Output info on a list of projects

    Parameters
    @@ -819,7 +819,7 @@ include this extra information.

    -composer.cli.projects.projects_list(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.projects.projects_list(socket_path, api_version, args, show_json=False)[source]¶

    Output the list of available projects

    Parameters
    @@ -839,7 +839,7 @@ include this extra information.

    composer.cli.sources module¶

    -composer.cli.sources.sources_add(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.sources.sources_add(socket_path, api_version, args, show_json=False)[source]¶

    Add or change a source

    Parameters
    @@ -856,7 +856,7 @@ include this extra information.

    -composer.cli.sources.sources_cmd(opts)[source]¶
    +composer.cli.sources.sources_cmd(opts)[source]¶

    Process sources commands

    Parameters
    @@ -873,7 +873,7 @@ include this extra information.

    -composer.cli.sources.sources_delete(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.sources.sources_delete(socket_path, api_version, args, show_json=False)[source]¶

    Delete a source

    Parameters
    @@ -890,7 +890,7 @@ include this extra information.

    -composer.cli.sources.sources_info(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.sources.sources_info(socket_path, api_version, args, show_json=False)[source]¶

    Output info on a list of projects

    Parameters
    @@ -907,7 +907,7 @@ include this extra information.

    -composer.cli.sources.sources_list(socket_path, api_version, args, show_json=False)[source]¶
    +composer.cli.sources.sources_list(socket_path, api_version, args, show_json=False)[source]¶

    Output the list of available sources

    Parameters
    @@ -927,7 +927,7 @@ include this extra information.

    composer.cli.status module¶

    -composer.cli.status.status_cmd(opts)[source]¶
    +composer.cli.status.status_cmd(opts)[source]¶

    Process status commands

    Parameters
    @@ -947,7 +947,7 @@ include this extra information.

    composer.cli.utilities module¶

    -composer.cli.utilities.argify(args)[source]¶
    +composer.cli.utilities.argify(args)[source]¶

    Take a list of human args and return a list with each item

    Parameters
    @@ -966,7 +966,7 @@ include this extra information.

    -composer.cli.utilities.frozen_toml_filename(blueprint_name)[source]¶
    +composer.cli.utilities.frozen_toml_filename(blueprint_name)[source]¶

    Convert a blueprint name into a filename.toml

    Parameters
    @@ -983,7 +983,7 @@ include this extra information.

    -composer.cli.utilities.handle_api_result(result, show_json=False)[source]¶
    +composer.cli.utilities.handle_api_result(result, show_json=False)[source]¶

    Log any errors, return the correct value

    Parameters
    @@ -1002,7 +1002,7 @@ not to continue processing the results.

    -composer.cli.utilities.packageNEVRA(pkg)[source]¶
    +composer.cli.utilities.packageNEVRA(pkg)[source]¶

    Return the package info as a NEVRA

    Parameters
    @@ -1019,7 +1019,7 @@ not to continue processing the results.

    -composer.cli.utilities.toml_filename(blueprint_name)[source]¶
    +composer.cli.utilities.toml_filename(blueprint_name)[source]¶

    Convert a blueprint name into a filename.toml

    Parameters
    @@ -1039,7 +1039,7 @@ not to continue processing the results.

    Module contents¶

    -composer.cli.main(opts)[source]¶
    +composer.cli.main(opts)[source]¶

    Main program execution

    Parameters
    diff --git a/composer.html b/composer.html index 25dacabb..7c00c6a3 100644 --- a/composer.html +++ b/composer.html @@ -8,7 +8,7 @@ - composer package — Lorax 31.7 documentation + composer package — Lorax 31.9 documentation @@ -60,7 +60,7 @@
    - 31.7 + 31.9
    @@ -203,7 +203,7 @@

    composer.http_client module¶

    -composer.http_client.api_url(api_version, url)[source]¶
    +composer.http_client.api_url(api_version, url)[source]¶

    Return the versioned path to the API route

    Parameters
    @@ -223,7 +223,7 @@
    -composer.http_client.append_query(url, query)[source]¶
    +composer.http_client.append_query(url, query)[source]¶

    Add a query argument to a URL

    The query should be of the form "param1=what&param2=ever", i.e., no leading '?'. The new query data will be appended to any existing @@ -246,7 +246,7 @@ query string.

    -composer.http_client.delete_url_json(socket_path, url)[source]¶
    +composer.http_client.delete_url_json(socket_path, url)[source]¶

    Send a DELETE request to the url and return JSON response

    Parameters
    @@ -266,7 +266,7 @@ query string.

    -composer.http_client.download_file(socket_path, url, progress=True)[source]¶
    +composer.http_client.download_file(socket_path, url, progress=True)[source]¶

    Download a file, saving it to the CWD with the included filename

    Parameters
    @@ -280,7 +280,7 @@ query string.

    -composer.http_client.get_filename(headers)[source]¶
    +composer.http_client.get_filename(headers)[source]¶

    Get the filename from the response header

    Parameters
    @@ -300,7 +300,7 @@ query string.

    -composer.http_client.get_url_json(socket_path, url)[source]¶
    +composer.http_client.get_url_json(socket_path, url)[source]¶

    Return the JSON results of a GET request

    Parameters
    @@ -320,7 +320,7 @@ query string.

    -composer.http_client.get_url_json_unlimited(socket_path, url, total_fn=None)[source]¶
    +composer.http_client.get_url_json_unlimited(socket_path, url, total_fn=None)[source]¶

    Return the JSON results of a GET request

    For URLs that use offset/limit arguments, this command will fetch all results for the given request.

    @@ -342,7 +342,7 @@ fetch all results for the given request.

    -composer.http_client.get_url_raw(socket_path, url)[source]¶
    +composer.http_client.get_url_raw(socket_path, url)[source]¶

    Return the raw results of a GET request

    Parameters
    @@ -362,7 +362,7 @@ fetch all results for the given request.

    -composer.http_client.post_url(socket_path, url, body)[source]¶
    +composer.http_client.post_url(socket_path, url, body)[source]¶

    POST raw data to the URL

    Parameters
    @@ -383,7 +383,7 @@ fetch all results for the given request.

    -composer.http_client.post_url_json(socket_path, url, body)[source]¶
    +composer.http_client.post_url_json(socket_path, url, body)[source]¶

    POST some JSON data to the URL

    Parameters
    @@ -404,7 +404,7 @@ fetch all results for the given request.

    -composer.http_client.post_url_toml(socket_path, url, body)[source]¶
    +composer.http_client.post_url_toml(socket_path, url, body)[source]¶

    POST a TOML string to the URL

    Parameters
    @@ -428,11 +428,11 @@ fetch all results for the given request.

    composer.unix_socket module¶

    -class composer.unix_socket.UnixHTTPConnection(socket_path, timeout=60)[source]¶
    +class composer.unix_socket.UnixHTTPConnection(socket_path, timeout=60)[source]¶

    Bases: http.client.HTTPConnection, object

    -connect()[source]¶
    +connect()[source]¶

    Connect to the host and port specified in __init__.

    @@ -440,7 +440,7 @@ fetch all results for the given request.

    -class composer.unix_socket.UnixHTTPConnectionPool(socket_path, timeout=60)[source]¶
    +class composer.unix_socket.UnixHTTPConnectionPool(socket_path, timeout=60)[source]¶

    Bases: urllib3.connectionpool.HTTPConnectionPool

    diff --git a/genindex.html b/genindex.html index c2f82d74..78147de5 100644 --- a/genindex.html +++ b/genindex.html @@ -9,7 +9,7 @@ - Index — Lorax 31.7 documentation + Index — Lorax 31.9 documentation @@ -59,7 +59,7 @@
    - 31.7 + 31.9
    @@ -287,8 +287,14 @@
  • check() (pylorax.api.gitrpm.GitRpmBuild method)
  • check_kickstart() (in module pylorax.creator) +
  • +
  • check_list_case() (in module pylorax.api.recipes)
  • check_queues() (in module pylorax.api.queue) +
  • +
  • check_recipe_dict() (in module pylorax.api.recipes) +
  • +
  • check_required_list() (in module pylorax.api.recipes)
  • checkparams() (in module pylorax.api.checkparams)
  • @@ -342,14 +348,14 @@
  • compose_status() (in module composer.cli.compose)
  • + + -
      -
    • dir (pylorax.api.server.GitLock attribute) +
    • dir() (pylorax.api.server.GitLock property)
    • DiscInfo (class in pylorax.discinfo)
    • @@ -462,7 +468,7 @@
    • download_file() (in module composer.http_client)
    • -
    • dracut_hooks_path (pylorax.treebuilder.TreeBuilder attribute) +
    • dracut_hooks_path() (pylorax.treebuilder.TreeBuilder property)
    • dumps() (in module pylorax.api.toml)
    • @@ -500,7 +506,7 @@ @@ -684,7 +690,7 @@

      K

        @@ -716,13 +722,13 @@
      • loads() (in module pylorax.api.toml)
      • -
      • lock (pylorax.api.dnfbase.DNFLock attribute) +
      • lock() (pylorax.api.dnfbase.DNFLock property)
      • -
      • lock_check (pylorax.api.dnfbase.DNFLock attribute) +
      • lock_check() (pylorax.api.dnfbase.DNFLock property)
      • log() (pylorax.ltmpl.LoraxTemplateRunner method)
      • @@ -789,8 +795,6 @@
      • make_runtime() (in module pylorax.creator)
      • make_setup_state() (pylorax.api.flask_blueprint.BlueprintSkip method) -
      • -
      • make_squashfs() (in module pylorax.creator)
      • mkbtrfsimg() (in module pylorax.imgutils)
      • @@ -822,9 +826,9 @@
      • mktar() (in module pylorax.imgutils)
      • -
      • module_names (pylorax.api.recipes.Recipe attribute) +
      • module_names() (pylorax.api.recipes.Recipe property)
      • -
      • module_nver (pylorax.api.recipes.Recipe attribute) +
      • module_nver() (pylorax.api.recipes.Recipe property)
      • modules_cmd() (in module composer.cli.modules)
      • @@ -872,9 +876,9 @@

        P

        - - - - + - + - + - + - + - + - + - + - + - + - + - + + id="toggle-2" style="display: none" alt="-" /> - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
        -
      • repo (pylorax.api.server.GitLock attribute) +
      • repo() (pylorax.api.server.GitLock property)
      • repo_file_exists() (in module pylorax.api.recipes)
      • @@ -1206,7 +1210,7 @@
      • take_limits() (in module pylorax.api.v0)
      • -
      • templatedir (pylorax.Lorax attribute) +
      • templatedir() (pylorax.Lorax property)
      • TemplateRunner (class in pylorax.ltmpl)
      • diff --git a/index.html b/index.html index 890d7f67..319bdd45 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ - Welcome to Lorax's documentation! — Lorax 31.7 documentation + Welcome to Lorax's documentation! — Lorax 31.9 documentation @@ -59,7 +59,7 @@
        - 31.7 + 31.9
        diff --git a/intro.html b/intro.html index 92b6c7f4..7615985a 100644 --- a/intro.html +++ b/intro.html @@ -8,7 +8,7 @@ - Introduction to Lorax — Lorax 31.7 documentation + Introduction to Lorax — Lorax 31.9 documentation @@ -60,7 +60,7 @@
        - 31.7 + 31.9
        diff --git a/livemedia-creator.html b/livemedia-creator.html index 2a2e749f..0caf7434 100644 --- a/livemedia-creator.html +++ b/livemedia-creator.html @@ -8,7 +8,7 @@ - livemedia-creator — Lorax 31.7 documentation + livemedia-creator — Lorax 31.9 documentation @@ -60,7 +60,7 @@
        - 31.7 + 31.9
        @@ -254,8 +254,9 @@ you have the anaconda-tui package installed.

        [--vagrant-metadata VAGRANT_METADATA] [--vagrantfile VAGRANTFILE] [--title TITLE] [--project PROJECT] [--releasever RELEASEVER] - [--volid VOLID] [--squashfs_args SQUASHFS_ARGS] - [--timeout TIMEOUT] [-V] + [--volid VOLID] [--squashfs-only] + [--squashfs_args SQUASHFS_ARGS] [--timeout TIMEOUT] + [-V]
        @@ -377,6 +378,10 @@ you have the anaconda-tui package installed.

        --volid

        volume id

        +
        --squashfs-only
        +

        Use a plain squashfs filesystem for the runtime.

        +

        Default: False

        +
        --squashfs_args

        additional squashfs args

        diff --git a/lorax-composer.html b/lorax-composer.html index 906f0da1..b6efac27 100644 --- a/lorax-composer.html +++ b/lorax-composer.html @@ -8,7 +8,7 @@ - lorax-composer — Lorax 31.7 documentation + lorax-composer — Lorax 31.9 documentation @@ -60,7 +60,7 @@
        - 31.7 + 31.9
        @@ -550,7 +550,7 @@ file accepted by sy

        [[repos.git]]¶

        -

        The [[repos.git]] entries are used to add files from a git repository<https://git-scm.com/> +

        The [[repos.git]] entries are used to add files from a git repository repository to the created image. The repository is cloned, the specified ref is checked out and an rpm is created to install the files to a destination path. The rpm includes a summary with the details of the repository and reference used to create it. The rpm is also included in the diff --git a/lorax.html b/lorax.html index 4acc090f..5d88cb43 100644 --- a/lorax.html +++ b/lorax.html @@ -8,7 +8,7 @@ - Lorax — Lorax 31.7 documentation + Lorax — Lorax 31.9 documentation @@ -60,7 +60,7 @@

        - 31.7 + 31.9
        diff --git a/modules.html b/modules.html index 90aeacfa..e3ffb595 100644 --- a/modules.html +++ b/modules.html @@ -8,7 +8,7 @@ - src — Lorax 31.7 documentation + src — Lorax 31.9 documentation @@ -60,7 +60,7 @@
        - 31.7 + 31.9
        diff --git a/objects.inv b/objects.inv index aef5747e..bd29dd3e 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/product-images.html b/product-images.html index 4274df6d..d17ff173 100644 --- a/product-images.html +++ b/product-images.html @@ -8,7 +8,7 @@ - Product and Updates Images — Lorax 31.7 documentation + Product and Updates Images — Lorax 31.9 documentation @@ -60,7 +60,7 @@
        - 31.7 + 31.9
        diff --git a/py-modindex.html b/py-modindex.html index 08618383..f86db0b4 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -8,7 +8,7 @@ - Python Module Index — Lorax 31.7 documentation + Python Module Index — Lorax 31.9 documentation @@ -61,7 +61,7 @@
        - 31.7 + 31.9
        @@ -172,68 +172,62 @@
        composer
        - composer -
            composer.cli
            composer.cli.blueprints
            composer.cli.cmdline
            composer.cli.compose
            composer.cli.help
            composer.cli.modules
            composer.cli.projects
            composer.cli.sources
            composer.cli.status
            composer.cli.utilities
            composer.http_client
            composer.unix_socket @@ -243,197 +237,191 @@ p
        pylorax
        - pylorax -
            pylorax.api
            pylorax.api.bisect
            pylorax.api.checkparams
            pylorax.api.cmdline
            pylorax.api.compose
            pylorax.api.config
            pylorax.api.dnfbase
            pylorax.api.errors
            pylorax.api.flask_blueprint
            pylorax.api.gitrpm
            pylorax.api.projects
            pylorax.api.queue
            pylorax.api.recipes
            pylorax.api.regexes
            pylorax.api.server
            pylorax.api.timestamp
            pylorax.api.toml
            pylorax.api.v0
            pylorax.api.workspace
            pylorax.base
            pylorax.buildstamp
            pylorax.cmdline
            pylorax.creator
            pylorax.decorators
            pylorax.discinfo
            pylorax.dnfbase
            pylorax.dnfhelper
            pylorax.executils
            pylorax.imgutils
            pylorax.installer
            pylorax.ltmpl
            pylorax.monitor
            pylorax.mount
            pylorax.output
            pylorax.sysutils
            pylorax.treebuilder
            pylorax.treeinfo diff --git a/pylorax.api.html b/pylorax.api.html index a73768d1..e82a0c2b 100644 --- a/pylorax.api.html +++ b/pylorax.api.html @@ -8,7 +8,7 @@ - pylorax.api package — Lorax 31.7 documentation + pylorax.api package — Lorax 31.9 documentation @@ -59,7 +59,7 @@
        - 31.7 + 31.9
        @@ -199,7 +199,7 @@

        pylorax.api.bisect module¶

        -pylorax.api.bisect.insort_left(a, x, key=None, lo=0, hi=None)[source]¶
        +pylorax.api.bisect.insort_left(a, x, key=None, lo=0, hi=None)[source]¶

        Insert item x in list a, and keep it sorted assuming a is sorted.

        Parameters
        @@ -229,7 +229,7 @@ was inserted.

        pylorax.api.checkparams module¶

        -pylorax.api.checkparams.checkparams(tuples)[source]¶
        +pylorax.api.checkparams.checkparams(tuples)[source]¶
        @@ -237,7 +237,7 @@ was inserted.

        pylorax.api.cmdline module¶

        -pylorax.api.cmdline.lorax_composer_parser()[source]¶
        +pylorax.api.cmdline.lorax_composer_parser()[source]¶

        Return the ArgumentParser for lorax-composer

        @@ -257,7 +257,7 @@ package NEVRAs will be appended to it at build time.

        parameters needed to generate the desired output. Other types should be set to False.

        -pylorax.api.compose.add_customizations(f, recipe)[source]¶
        +pylorax.api.compose.add_customizations(f, recipe)[source]¶

        Add customizations to the kickstart file

        Parameters
        @@ -277,7 +277,7 @@ parameters needed to generate the desired output. Other types should be set to F
        -pylorax.api.compose.bootloader_append(line, kernel_append)[source]¶
        +pylorax.api.compose.bootloader_append(line, kernel_append)[source]¶

        Insert the kernel_append string into the --append argument

        Parameters
        @@ -293,7 +293,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

        -pylorax.api.compose.compose_args(compose_type)[source]¶
        +pylorax.api.compose.compose_args(compose_type)[source]¶

        Returns the settings to pass to novirt_install for the compose type

        Parameters
        @@ -307,14 +307,14 @@ Other options will be filled in by make_compose()

        -pylorax.api.compose.compose_types(share_dir)[source]¶
        +pylorax.api.compose.compose_types(share_dir)[source]¶

        Returns a list of the supported output types

        The output types come from the kickstart names in /usr/share/lorax/composer/*ks

        -pylorax.api.compose.customize_ks_template(ks_template, recipe)[source]¶
        +pylorax.api.compose.customize_ks_template(ks_template, recipe)[source]¶

        Customize the kickstart template and return it

        Parameters
        @@ -333,7 +333,7 @@ Add bootloader line if it is missing.

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

        Update the firewall line with the new ports and services

        Parameters
        @@ -349,7 +349,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

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

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

        @@ -367,7 +367,7 @@ the settings.

        -pylorax.api.compose.get_extra_pkgs(dbo, share_dir, compose_type)[source]¶
        +pylorax.api.compose.get_extra_pkgs(dbo, share_dir, compose_type)[source]¶

        Return extra packages needed for the output type

        Parameters
        @@ -393,7 +393,7 @@ even though the results are applied differently.

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

        Return the customizations.firewall settings

        Parameters
        @@ -410,7 +410,7 @@ even though the results are applied differently.

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

        Return the customizations.kernel append value

        Parameters
        @@ -427,7 +427,7 @@ even though the results are applied differently.

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

        Return the customizations.locale.keyboard list

        Parameters
        @@ -444,7 +444,7 @@ even though the results are applied differently.

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

        Return the customizations.locale.languages list

        Parameters
        @@ -461,7 +461,7 @@ even though the results are applied differently.

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

        Return the customizations.services settings

        Parameters
        @@ -478,7 +478,7 @@ even though the results are applied differently.

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

        Return the customizations.timezone dict

        Parameters
        @@ -495,7 +495,7 @@ even though the results are applied differently.

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

        Update the keyboard line with the layout

        Parameters
        @@ -511,7 +511,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

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

        Update the lang line with the languages

        Parameters
        @@ -527,7 +527,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

        -pylorax.api.compose.move_compose_results(cfg, results_dir)[source]¶
        +pylorax.api.compose.move_compose_results(cfg, results_dir)[source]¶

        Move the final image to the results_dir and cleanup the unneeded compose files

        Parameters
        @@ -541,7 +541,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

        -pylorax.api.compose.repo_to_ks(r, url='url')[source]¶
        +pylorax.api.compose.repo_to_ks(r, url='url')[source]¶

        Return a kickstart line with the correct args. :param r: DNF repository information :type r: dnf.Repo @@ -554,7 +554,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

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

        Update the services line with additional services to enable/disable

        Parameters
        @@ -570,7 +570,7 @@ 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]¶
        +pylorax.api.compose.start_build(cfg, dnflock, gitlock, branch, recipe_name, compose_type, test_mode=0)[source]¶

        Start the build

        Parameters
        @@ -592,7 +592,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

        -pylorax.api.compose.test_templates(dbo, share_dir)[source]¶
        +pylorax.api.compose.test_templates(dbo, share_dir)[source]¶

        Try depsolving each of the the templates and report any errors

        Parameters
        @@ -610,7 +610,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

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

        Update the timezone line with the settings

        Parameters
        @@ -626,7 +626,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

        -pylorax.api.compose.write_ks_group(f, group)[source]¶
        +pylorax.api.compose.write_ks_group(f, group)[source]¶

        Write kickstart group entry

        Parameters
        @@ -641,7 +641,7 @@ is parsed correctly, and re-assembled for inclusion into the final kickstart

        -pylorax.api.compose.write_ks_root(f, user)[source]¶
        +pylorax.api.compose.write_ks_root(f, user)[source]¶

        Write kickstart root password and sshkey entry

        Parameters
        @@ -665,7 +665,7 @@ for root.

        -pylorax.api.compose.write_ks_user(f, user)[source]¶
        +pylorax.api.compose.write_ks_user(f, user)[source]¶

        Write kickstart user and sshkey entry

        Parameters
        @@ -686,18 +686,18 @@ with whatever options are relevant.

        pylorax.api.config module¶

        -class pylorax.api.config.ComposerConfig(defaults=None, dict_type=<class 'collections.OrderedDict'>, allow_no_value=False, *, delimiters=('=', ':'), comment_prefixes=('#', ';'), inline_comment_prefixes=None, strict=True, empty_lines_in_values=True, default_section='DEFAULT', interpolation=<object object>, converters=<object object>)[source]¶
        +class pylorax.api.config.ComposerConfig(defaults=None, dict_type=<class 'collections.OrderedDict'>, allow_no_value=False, *, delimiters=('=', ':'), comment_prefixes=('#', ';'), inline_comment_prefixes=None, strict=True, empty_lines_in_values=True, default_section='DEFAULT', interpolation=<object object>, converters=<object object>)[source]¶

        Bases: configparser.ConfigParser

        -get_default(section, option, default)[source]¶
        +get_default(section, option, default)[source]¶
        -pylorax.api.config.configure(conf_file='/etc/lorax/composer.conf', root_dir='/', test_config=False)[source]¶
        +pylorax.api.config.configure(conf_file='/etc/lorax/composer.conf', root_dir='/', test_config=False)[source]¶

        lorax-composer configuration

        Parameters
        @@ -712,7 +712,7 @@ with whatever options are relevant.

        -pylorax.api.config.make_dnf_dirs(conf, uid, gid)[source]¶
        +pylorax.api.config.make_dnf_dirs(conf, uid, gid)[source]¶

        Make any missing dnf directories owned by user:group

        Parameters
        @@ -733,7 +733,7 @@ with whatever options are relevant.

        -pylorax.api.config.make_owned_dir(p_dir, uid, gid)[source]¶
        +pylorax.api.config.make_owned_dir(p_dir, uid, gid)[source]¶

        Make a directory and its parents, setting owner and group

        Parameters
        @@ -755,7 +755,7 @@ with whatever options are relevant.

        -pylorax.api.config.make_queue_dirs(conf, gid)[source]¶
        +pylorax.api.config.make_queue_dirs(conf, gid)[source]¶

        Make any missing queue directories

        Parameters
        @@ -778,23 +778,23 @@ with whatever options are relevant.

        pylorax.api.dnfbase module¶

        -class pylorax.api.dnfbase.DNFLock(conf, expire_secs=21600)[source]¶
        +class pylorax.api.dnfbase.DNFLock(conf, expire_secs=21600)[source]¶

        Bases: object

        Hold the dnf.Base object and a Lock to control access to it.

        self.dbo is a property that returns the dnf.Base object, but it may change from one call to the next if the upstream repositories have changed.

        -
        +
        -lock¶
        +property lock¶

        Check for repo updates (using expiration time) and return the lock

        If the repository has been updated, tear down the old dnf.Base and create a new one. This is the only way to force dnf to use the new metadata.

        -
        +
        -lock_check¶
        +property lock_check¶

        Force a check for repo updates and return the lock

        Use this method sparingly, it removes the repodata and downloads a new copy every time.

        @@ -803,7 +803,7 @@ metadata.

        -pylorax.api.dnfbase.get_base_object(conf)[source]¶
        +pylorax.api.dnfbase.get_base_object(conf)[source]¶

        Get the DNF object with settings from the config file

        Parameters
        @@ -841,11 +841,11 @@ server.register_blueprint(v1, url_prefix="/api/v1/")

        and then register v1's version of /blueprints/list under /api/v1

        -class pylorax.api.flask_blueprint.BlueprintSetupStateSkip(blueprint, app, options, first_registration, skip_rules)[source]¶
        +class pylorax.api.flask_blueprint.BlueprintSetupStateSkip(blueprint, app, options, first_registration, skip_rules)[source]¶

        Bases: flask.blueprints.BlueprintSetupState

        -add_url_rule(rule, endpoint=None, view_func=None, **options)[source]¶
        +add_url_rule(rule, endpoint=None, view_func=None, **options)[source]¶

        A helper method to register a rule (and optionally a view function) to the application. The endpoint is automatically prefixed with the blueprint's name.

        @@ -855,11 +855,11 @@ blueprint's name.

        -class pylorax.api.flask_blueprint.BlueprintSkip(*args, **kwargs)[source]¶
        +class pylorax.api.flask_blueprint.BlueprintSkip(*args, **kwargs)[source]¶

        Bases: flask.blueprints.Blueprint

        -make_setup_state(app, options, first_registration=False)[source]¶
        +make_setup_state(app, options, first_registration=False)[source]¶

        Creates an instance of BlueprintSetupState() object that is later passed to the register callback functions. Subclasses can override this to return a subclass of the setup state.

        @@ -876,12 +876,12 @@ the selected commit, branch, or tag, and packaging the files into an rpm that wi be installed by anaconda when creating the image.

        -class pylorax.api.gitrpm.GitArchiveTarball(gitRepo)[source]¶
        +class pylorax.api.gitrpm.GitArchiveTarball(gitRepo)[source]¶

        Bases: object

        Create a git archive of the selected git repo and reference

        -write_file(sourcesDir)[source]¶
        +write_file(sourcesDir)[source]¶

        Create the tar archive

        Parameters
        @@ -896,12 +896,12 @@ The result is in RPMNAME.tar.xz under the sourcesDir

        -class pylorax.api.gitrpm.GitRpmBuild(*args, **kwargs)[source]¶
        +class pylorax.api.gitrpm.GitRpmBuild(*args, **kwargs)[source]¶

        Bases: rpmfluff.SimpleRpmBuild

        Build an rpm containing files from a git repository

        -add_git_tarball(gitRepo)[source]¶
        +add_git_tarball(gitRepo)[source]¶

        Add a tar archive of a git repository to the rpm

        Parameters
        @@ -916,24 +916,24 @@ path.

        -check()[source]¶
        +check()[source]¶
        -clean()[source]¶
        +clean()[source]¶

        Remove the base directory from inside the tmpdir

        -cleanup_tmpdir()[source]¶
        +cleanup_tmpdir()[source]¶

        Remove the temporary directory and all of its contents

        -get_base_dir()[source]¶
        +get_base_dir()[source]¶

        Place all the files under a temporary directory + rpmbuild/

        @@ -941,7 +941,7 @@ path.

        -pylorax.api.gitrpm.create_gitrpm_repo(results_dir, recipe)[source]¶
        +pylorax.api.gitrpm.create_gitrpm_repo(results_dir, recipe)[source]¶

        Create a dnf repository with the rpms from the recipe

        Parameters
        @@ -965,7 +965,7 @@ repository to the caller.

        -pylorax.api.gitrpm.get_repo_description(gitRepo)[source]¶
        +pylorax.api.gitrpm.get_repo_description(gitRepo)[source]¶

        Return a description including the git repo and reference

        Parameters
        @@ -982,7 +982,7 @@ repository to the caller.

        -pylorax.api.gitrpm.make_git_rpm(gitRepo, dest)[source]¶
        +pylorax.api.gitrpm.make_git_rpm(gitRepo, dest)[source]¶

        Create an rpm from the specified git repo

        Parameters
        @@ -1017,13 +1017,13 @@ directory. The gitRepo dict should have the following fields:

        pylorax.api.projects module¶

        -exception pylorax.api.projects.ProjectsError[source]¶
        +exception pylorax.api.projects.ProjectsError[source]¶

        Bases: Exception

        -pylorax.api.projects.api_changelog(changelog)[source]¶
        +pylorax.api.projects.api_changelog(changelog)[source]¶

        Convert the changelog to a string

        Parameters
        @@ -1041,7 +1041,7 @@ directory. The gitRepo dict should have the following fields:

        -pylorax.api.projects.api_time(t)[source]¶
        +pylorax.api.projects.api_time(t)[source]¶

        Convert time since epoch to a string

        Parameters
        @@ -1058,7 +1058,7 @@ directory. The gitRepo dict should have the following fields:

        -pylorax.api.projects.delete_repo_source(source_glob, source_name)[source]¶
        +pylorax.api.projects.delete_repo_source(source_glob, source_name)[source]¶

        Delete a source from a repo file

        Parameters
        @@ -1079,7 +1079,7 @@ source_name isn't passed to it.

        -pylorax.api.projects.dep_evra(dep)[source]¶
        +pylorax.api.projects.dep_evra(dep)[source]¶

        Return the epoch:version-release.arch for the dep

        Parameters
        @@ -1096,13 +1096,13 @@ source_name isn't passed to it.

        -pylorax.api.projects.dep_nevra(dep)[source]¶
        +pylorax.api.projects.dep_nevra(dep)[source]¶

        Return the name-epoch:version-release.arch

        -pylorax.api.projects.dnf_repo_to_file_repo(repo)[source]¶
        +pylorax.api.projects.dnf_repo_to_file_repo(repo)[source]¶

        Return a string representation of a DNF Repo object suitable for writing to a .repo file

        Parameters
        @@ -1122,7 +1122,7 @@ only the attributes we care about.

        -pylorax.api.projects.estimate_size(packages, block_size=6144)[source]¶
        +pylorax.api.projects.estimate_size(packages, block_size=6144)[source]¶

        Estimate the installed size of a package list

        Parameters
        @@ -1145,7 +1145,7 @@ a minimum size for each package.

        -pylorax.api.projects.get_repo_sources(source_glob)[source]¶
        +pylorax.api.projects.get_repo_sources(source_glob)[source]¶

        Return a list of sources from a directory of yum repositories

        Parameters
        @@ -1162,7 +1162,7 @@ a minimum size for each package.

        -pylorax.api.projects.get_source_ids(source_path)[source]¶
        +pylorax.api.projects.get_source_ids(source_path)[source]¶

        Return a list of the source ids in a file

        Parameters
        @@ -1179,7 +1179,7 @@ a minimum size for each package.

        -pylorax.api.projects.modules_info(dbo, module_names)[source]¶
        +pylorax.api.projects.modules_info(dbo, module_names)[source]¶

        Return details about a module, including dependencies

        Parameters
        @@ -1199,7 +1199,7 @@ a minimum size for each package.

        -pylorax.api.projects.modules_list(dbo, module_names)[source]¶
        +pylorax.api.projects.modules_list(dbo, module_names)[source]¶

        Return a list of modules

        Parameters
        @@ -1222,7 +1222,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.pkg_to_build(pkg)[source]¶
        +pylorax.api.projects.pkg_to_build(pkg)[source]¶

        Extract the build details from a hawkey.Package object

        Parameters
        @@ -1241,7 +1241,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.pkg_to_dep(pkg)[source]¶
        +pylorax.api.projects.pkg_to_dep(pkg)[source]¶

        Extract the info from a hawkey.Package object

        Parameters
        @@ -1258,7 +1258,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.pkg_to_project(pkg)[source]¶
        +pylorax.api.projects.pkg_to_project(pkg)[source]¶

        Extract the details from a hawkey.Package object

        Parameters
        @@ -1276,7 +1276,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.pkg_to_project_info(pkg)[source]¶
        +pylorax.api.projects.pkg_to_project_info(pkg)[source]¶

        Extract the details from a hawkey.Package object

        Parameters
        @@ -1294,7 +1294,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.proj_to_module(proj)[source]¶
        +pylorax.api.projects.proj_to_module(proj)[source]¶

        Extract the name from a project_info dict

        Parameters
        @@ -1312,7 +1312,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.projects_depsolve(dbo, projects, groups)[source]¶
        +pylorax.api.projects.projects_depsolve(dbo, projects, groups)[source]¶

        Return the dependencies for a list of projects

        Parameters
        @@ -1336,7 +1336,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.projects_depsolve_with_size(dbo, projects, groups, with_core=True)[source]¶
        +pylorax.api.projects.projects_depsolve_with_size(dbo, projects, groups, with_core=True)[source]¶

        Return the dependencies and installed size for a list of projects

        Parameters
        @@ -1360,7 +1360,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.projects_info(dbo, project_names)[source]¶
        +pylorax.api.projects.projects_info(dbo, project_names)[source]¶

        Return details about specific projects

        Parameters
        @@ -1381,7 +1381,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.projects_list(dbo)[source]¶
        +pylorax.api.projects.projects_list(dbo)[source]¶

        Return a list of projects

        Parameters
        @@ -1398,7 +1398,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.repo_to_source(repo, system_source)[source]¶
        +pylorax.api.projects.repo_to_source(repo, system_source)[source]¶

        Return a Weldr Source dict created from the DNF Repository

        Parameters
        @@ -1433,7 +1433,7 @@ and sets the type to "rpm"

        -pylorax.api.projects.source_to_repo(source, dnf_conf)[source]¶
        +pylorax.api.projects.source_to_repo(source, dnf_conf)[source]¶

        Return a dnf Repo object created from a source dict

        Parameters
        @@ -1469,7 +1469,7 @@ and sets the type to "rpm"

        Functions to monitor compose queue and run anaconda

        -pylorax.api.queue.build_status(cfg, status_filter=None)[source]¶
        +pylorax.api.queue.build_status(cfg, status_filter=None)[source]¶

        Return the details of finished or failed builds

        Parameters
        @@ -1492,7 +1492,7 @@ Use queue_status() for those.

        -pylorax.api.queue.check_queues(cfg)[source]¶
        +pylorax.api.queue.check_queues(cfg)[source]¶

        Check to make sure the new and run queue symlinks are correct

        Parameters
        @@ -1505,7 +1505,7 @@ set in STATUS have a symlink in queue/new/

        -pylorax.api.queue.compose_detail(results_dir)[source]¶
        +pylorax.api.queue.compose_detail(results_dir)[source]¶

        Return details about the build.

        Parameters
        @@ -1542,7 +1542,7 @@ None in Python (or null in JSON). The following timestamps are included:

        -pylorax.api.queue.get_compose_type(results_dir)[source]¶
        +pylorax.api.queue.get_compose_type(results_dir)[source]¶

        Return the type of composition.

        Parameters
        @@ -1562,7 +1562,7 @@ None in Python (or null in JSON). The following timestamps are included:

        -pylorax.api.queue.get_image_name(uuid_dir)[source]¶
        +pylorax.api.queue.get_image_name(uuid_dir)[source]¶

        Return the filename and full path of the build's image file

        Parameters
        @@ -1582,7 +1582,7 @@ None in Python (or null in JSON). The following timestamps are included:

        -pylorax.api.queue.make_compose(cfg, results_dir)[source]¶
        +pylorax.api.queue.make_compose(cfg, results_dir)[source]¶

        Run anaconda with the final-kickstart.ks from results_dir

        Parameters
        @@ -1608,7 +1608,7 @@ object.

        -pylorax.api.queue.monitor(cfg)[source]¶
        +pylorax.api.queue.monitor(cfg)[source]¶

        Monitor the queue for new compose requests

        Parameters
        @@ -1630,7 +1630,7 @@ from ./queue/run/ to ./queue/new/ and rerun them.

        -pylorax.api.queue.queue_status(cfg)[source]¶
        +pylorax.api.queue.queue_status(cfg)[source]¶

        Return details about what is in the queue.

        Parameters
        @@ -1649,7 +1649,7 @@ and "run" has the uuids that are being built (currently limited to 1 a
        -pylorax.api.queue.start_queue_monitor(cfg, uid, gid)[source]¶
        +pylorax.api.queue.start_queue_monitor(cfg, uid, gid)[source]¶

        Start the queue monitor as a mp process

        Parameters
        @@ -1667,7 +1667,7 @@ and "run" has the uuids that are being built (currently limited to 1 a
        -pylorax.api.queue.uuid_cancel(cfg, uuid)[source]¶
        +pylorax.api.queue.uuid_cancel(cfg, uuid)[source]¶

        Cancel a build and delete its results

        Parameters
        @@ -1688,7 +1688,7 @@ and "run" has the uuids that are being built (currently limited to 1 a
        -pylorax.api.queue.uuid_delete(cfg, uuid)[source]¶
        +pylorax.api.queue.uuid_delete(cfg, uuid)[source]¶

        Delete all of the results from a compose

        Parameters
        @@ -1711,7 +1711,7 @@ and "run" has the uuids that are being built (currently limited to 1 a
        -pylorax.api.queue.uuid_image(cfg, uuid)[source]¶
        +pylorax.api.queue.uuid_image(cfg, uuid)[source]¶

        Return the filename and full path of the build's image file

        Parameters
        @@ -1734,7 +1734,7 @@ and "run" has the uuids that are being built (currently limited to 1 a
        -pylorax.api.queue.uuid_info(cfg, uuid)[source]¶
        +pylorax.api.queue.uuid_info(cfg, uuid)[source]¶

        Return information about the composition

        Parameters
        @@ -1767,18 +1767,19 @@ and "run" has the uuids that are being built (currently limited to 1 a
        -pylorax.api.queue.uuid_log(cfg, uuid, size=1024)[source]¶
        -

        Return size kbytes from the end of the anaconda.log

        +pylorax.api.queue.uuid_log(cfg, uuid, size=1024)[source]¶ +

        Return size KiB from the end of the most currently relevant log for a +given compose

        Parameters
        • cfg (ComposerConfig) -- Configuration settings

        • uuid (str) -- The UUID of the build

        • -
        • size (int) -- Number of kbytes to read. Default is 1024

        • +
        • size (int) -- Number of KiB to read. Default is 1024

        Returns
        -

        Up to size kbytes from the end of the log

        +

        Up to size KiB from the end of the log

        Return type

        str

        @@ -1787,13 +1788,15 @@ and "run" has the uuids that are being built (currently limited to 1 a

        RuntimeError if there was a problem (eg. no log file available)

        -

        This function tries to return lines from the end of the log, it will -attempt to start on a line boundry, and may return less than size kbytes.

        +

        This function will return the end of either the anaconda log, the packaging +log, or the combined composer logs, depending on the progress of the +compose. It tries to return lines from the end of the log, it will attempt +to start on a line boundary, and it may return less than size kbytes.

        -pylorax.api.queue.uuid_status(cfg, uuid)[source]¶
        +pylorax.api.queue.uuid_status(cfg, uuid)[source]¶

        Return the details of a specific UUID compose

        Parameters
        @@ -1814,7 +1817,7 @@ attempt to start on a line boundry, and may return less than size k
        -pylorax.api.queue.uuid_tar(cfg, uuid, metadata=False, image=False, logs=False)[source]¶
        +pylorax.api.queue.uuid_tar(cfg, uuid, metadata=False, image=False, logs=False)[source]¶

        Return a tar of the build data

        Parameters
        @@ -1845,19 +1848,19 @@ the selected data to the caller by returning the Popen stdout from the tar proce

        pylorax.api.recipes module¶

        -class pylorax.api.recipes.CommitDetails(commit, timestamp, message, revision=None)[source]¶
        +class pylorax.api.recipes.CommitDetails(commit, timestamp, message, revision=None)[source]¶

        Bases: pylorax.base.DataHolder

        -exception pylorax.api.recipes.CommitTimeValError[source]¶
        +exception pylorax.api.recipes.CommitTimeValError[source]¶

        Bases: Exception

        -pylorax.api.recipes.NewRecipeGit(toml_dict)[source]¶
        +pylorax.api.recipes.NewRecipeGit(toml_dict)[source]¶

        Create a RecipeGit object from fields in a TOML dict

        Parameters
        @@ -1895,7 +1898,7 @@ the selected data to the caller by returning the Popen stdout from the tar proce
        -class pylorax.api.recipes.Recipe(name, description, version, modules, packages, groups, customizations=None, gitrepos=None)[source]¶
        +class pylorax.api.recipes.Recipe(name, description, version, modules, packages, groups, customizations=None, gitrepos=None)[source]¶

        Bases: dict

        A Recipe of package and modules

        This is a subclass of dict that enforces the constructor arguments @@ -1903,7 +1906,7 @@ and adds a .filename property to return the recipe's filename, and a .toml() function to return the recipe as a TOML string.

        -bump_version(old_version=None)[source]¶
        +bump_version(old_version=None)[source]¶

        semver recipe version number bump

        Parameters
        @@ -1926,16 +1929,16 @@ If the old and new versions are the same, bump the patch level If they are different, check and return the new version

        -
        +
        -filename¶
        +property filename¶

        Return the Recipe's filename

        Replaces spaces in the name with '-' and appends .toml

        -freeze(deps)[source]¶
        +freeze(deps)[source]¶

        Return a new Recipe with full module and package NEVRA

        Parameters
        @@ -1950,39 +1953,39 @@ If they are different, check and return the new version

        -
        +
        -group_names¶
        +property group_names¶

        Return the names of the groups. Groups do not have versions.

        -
        +
        -module_names¶
        +property module_names¶

        Return the names of the modules

        -
        +
        -module_nver¶
        +property module_nver¶

        Return the names and version globs of the modules

        -
        +
        -package_names¶
        +property package_names¶

        Return the names of the packages

        -
        +
        -package_nver¶
        +property package_nver¶

        Return the names and version globs of the packages

        -toml()[source]¶
        +toml()[source]¶

        Return the Recipe in TOML format

        @@ -1990,43 +1993,108 @@ If they are different, check and return the new version

        -exception pylorax.api.recipes.RecipeError[source]¶
        +exception pylorax.api.recipes.RecipeError[source]¶

        Bases: Exception

        -exception pylorax.api.recipes.RecipeFileError[source]¶
        +exception pylorax.api.recipes.RecipeFileError[source]¶

        Bases: Exception

        -class pylorax.api.recipes.RecipeGit(rpmname, rpmversion, rpmrelease, summary, repo, ref, destination)[source]¶
        +class pylorax.api.recipes.RecipeGit(rpmname, rpmversion, rpmrelease, summary, repo, ref, destination)[source]¶

        Bases: dict

        -class pylorax.api.recipes.RecipeGroup(name)[source]¶
        +class pylorax.api.recipes.RecipeGroup(name)[source]¶

        Bases: dict

        -class pylorax.api.recipes.RecipeModule(name, version)[source]¶
        +class pylorax.api.recipes.RecipeModule(name, version)[source]¶

        Bases: dict

        -class pylorax.api.recipes.RecipePackage(name, version)[source]¶
        +class pylorax.api.recipes.RecipePackage(name, version)[source]¶

        Bases: pylorax.api.recipes.RecipeModule

        +
        +
        +pylorax.api.recipes.check_list_case(expected_keys, recipe_keys, prefix='')[source]¶
        +

        Check the case of the recipe keys

        +
        +
        Parameters
        +
          +
        • expected_keys (list of str) -- A list of expected key strings

        • +
        • recipe_keys (list of str) -- A list of the recipe's key strings

        • +
        +
        +
        Returns
        +

        list of errors

        +
        +
        Return type
        +

        list of str

        +
        +
        +
        + +
        +
        +pylorax.api.recipes.check_recipe_dict(recipe_dict)[source]¶
        +

        Check a dict before using it to create a new Recipe

        +
        +
        Parameters
        +

        recipe_dict (dict) -- A plain dict of the recipe

        +
        +
        Returns
        +

        True if dict is ok

        +
        +
        Return type
        +

        bool

        +
        +
        Raises
        +

        RecipeError

        +
        +
        +

        This checks a dict to make sure required fields are present, +that optional fields are correct, and that other optional fields +are of the correct format, when included.

        +

        This collects all of the errors and returns a single RecipeError with +a string that can be presented to users.

        +
        + +
        +
        +pylorax.api.recipes.check_required_list(lst, fields)[source]¶
        +

        Check a list of dicts for required fields

        +
        +
        Parameters
        +
          +
        • lst (list of dict) -- A list of dicts with fields

        • +
        • fields (list of str) -- A list of field name strings

        • +
        +
        +
        Returns
        +

        A list of error strings

        +
        +
        Return type
        +

        list of str

        +
        +
        +
        +
        -pylorax.api.recipes.commit_recipe(repo, branch, recipe)[source]¶
        +pylorax.api.recipes.commit_recipe(repo, branch, recipe)[source]¶

        Commit a recipe to a branch

        Parameters
        @@ -2050,7 +2118,7 @@ If they are different, check and return the new version

        -pylorax.api.recipes.commit_recipe_directory(repo, branch, directory)[source]¶
        +pylorax.api.recipes.commit_recipe_directory(repo, branch, directory)[source]¶

        Commit all *.toml files from a directory, if they aren't already in git.

        Parameters
        @@ -2073,7 +2141,7 @@ be tried.

        -pylorax.api.recipes.commit_recipe_file(repo, branch, filename)[source]¶
        +pylorax.api.recipes.commit_recipe_file(repo, branch, filename)[source]¶

        Commit a recipe file to a branch

        Parameters
        @@ -2097,13 +2165,13 @@ be tried.

        -pylorax.api.recipes.customizations_diff(old_recipe, new_recipe)[source]¶
        +pylorax.api.recipes.customizations_diff(old_recipe, new_recipe)[source]¶

        Diff the customizations sections from two versions of a recipe

        -pylorax.api.recipes.delete_file(repo, branch, filename)[source]¶
        +pylorax.api.recipes.delete_file(repo, branch, filename)[source]¶

        Delete a file from a branch.

        Parameters
        @@ -2127,7 +2195,7 @@ be tried.

        -pylorax.api.recipes.delete_recipe(repo, branch, recipe_name)[source]¶
        +pylorax.api.recipes.delete_recipe(repo, branch, recipe_name)[source]¶

        Delete a recipe from a branch.

        Parameters
        @@ -2151,7 +2219,7 @@ be tried.

        -pylorax.api.recipes.diff_lists(title, field, old_items, new_items)[source]¶
        +pylorax.api.recipes.diff_lists(title, field, old_items, new_items)[source]¶

        Return the differences between two lists of dicts.

        Parameters
        @@ -2173,7 +2241,7 @@ be tried.

        -pylorax.api.recipes.find_commit_tag(repo, branch, filename, commit_id)[source]¶
        +pylorax.api.recipes.find_commit_tag(repo, branch, filename, commit_id)[source]¶

        Find the tag that matches the commit_id

        Parameters
        @@ -2198,7 +2266,7 @@ be a tag at all.

        -pylorax.api.recipes.find_field_value(field, value, lst)[source]¶
        +pylorax.api.recipes.find_field_value(field, value, lst)[source]¶

        Find a field matching value in the list of dicts.

        Parameters
        @@ -2222,7 +2290,7 @@ be a tag at all.

        -pylorax.api.recipes.find_name(name, lst)[source]¶
        +pylorax.api.recipes.find_name(name, lst)[source]¶

        Find the dict matching the name in a list and return it.

        Parameters
        @@ -2243,7 +2311,7 @@ be a tag at all.

        -pylorax.api.recipes.find_recipe_obj(path, recipe, default=None)[source]¶
        +pylorax.api.recipes.find_recipe_obj(path, recipe, default=None)[source]¶

        Find a recipe object

        Parameters
        @@ -2262,7 +2330,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.get_commit_details(commit, revision=None)[source]¶
        +pylorax.api.recipes.get_commit_details(commit, revision=None)[source]¶

        Return the details about a specific commit.

        Parameters
        @@ -2285,7 +2353,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.get_revision_from_tag(tag)[source]¶
        +pylorax.api.recipes.get_revision_from_tag(tag)[source]¶

        Return the revision number from a tag

        Parameters
        @@ -2303,13 +2371,13 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.gfile(path)[source]¶
        +pylorax.api.recipes.gfile(path)[source]¶

        Convert a string path to GFile for use with Git

        -pylorax.api.recipes.head_commit(repo, branch)[source]¶
        +pylorax.api.recipes.head_commit(repo, branch)[source]¶

        Get the branch's HEAD Commit Object

        Parameters
        @@ -2332,7 +2400,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.is_commit_tag(repo, commit_id, tag)[source]¶
        +pylorax.api.recipes.is_commit_tag(repo, commit_id, tag)[source]¶

        Check to see if a tag points to a specific commit.

        Parameters
        @@ -2353,7 +2421,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.is_parent_diff(repo, filename, tree, parent)[source]¶
        +pylorax.api.recipes.is_parent_diff(repo, filename, tree, parent)[source]¶

        Check to see if the commit is different from its parents

        Parameters
        @@ -2375,7 +2443,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.list_branch_files(repo, branch)[source]¶
        +pylorax.api.recipes.list_branch_files(repo, branch)[source]¶

        Return a sorted list of the files on the branch HEAD

        Parameters
        @@ -2398,7 +2466,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.list_commit_files(repo, commit)[source]¶
        +pylorax.api.recipes.list_commit_files(repo, commit)[source]¶

        Return a sorted list of the files on a commit

        Parameters
        @@ -2421,7 +2489,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.list_commits(repo, branch, filename, limit=0)[source]¶
        +pylorax.api.recipes.list_commits(repo, branch, filename, limit=0)[source]¶

        List the commit history of a file on a branch.

        Parameters
        @@ -2446,7 +2514,7 @@ return the default if it doesn't exist.

        -pylorax.api.recipes.open_or_create_repo(path)[source]¶
        +pylorax.api.recipes.open_or_create_repo(path)[source]¶

        Open an existing repo, or create a new one

        Parameters
        @@ -2469,7 +2537,7 @@ creating a new one.

        -pylorax.api.recipes.prepare_commit(repo, branch, builder)[source]¶
        +pylorax.api.recipes.prepare_commit(repo, branch, builder)[source]¶

        Prepare for a commit

        Parameters
        @@ -2493,7 +2561,7 @@ creating a new one.

        -pylorax.api.recipes.read_commit(repo, branch, filename, commit=None)[source]¶
        +pylorax.api.recipes.read_commit(repo, branch, filename, commit=None)[source]¶

        Return the contents of a file on a specific branch or commit.

        Parameters
        @@ -2520,7 +2588,7 @@ commit:filename

        -pylorax.api.recipes.read_commit_spec(repo, spec)[source]¶
        +pylorax.api.recipes.read_commit_spec(repo, spec)[source]¶

        Return the raw content of the blob specified by the spec

        Parameters
        @@ -2544,7 +2612,7 @@ commit:filename

        -pylorax.api.recipes.read_recipe_and_id(repo, branch, recipe_name, commit=None)[source]¶
        +pylorax.api.recipes.read_recipe_and_id(repo, branch, recipe_name, commit=None)[source]¶

        Read a recipe commit and its id from git

        Parameters
        @@ -2571,7 +2639,7 @@ commit:filename

        -pylorax.api.recipes.read_recipe_commit(repo, branch, recipe_name, commit=None)[source]¶
        +pylorax.api.recipes.read_recipe_commit(repo, branch, recipe_name, commit=None)[source]¶

        Read a recipe commit from git and return a Recipe object

        Parameters
        @@ -2598,7 +2666,7 @@ commit:filename

        -pylorax.api.recipes.recipe_diff(old_recipe, new_recipe)[source]¶
        +pylorax.api.recipes.recipe_diff(old_recipe, new_recipe)[source]¶

        Diff two versions of a recipe

        Parameters
        @@ -2618,14 +2686,14 @@ commit:filename

        -pylorax.api.recipes.recipe_filename(name)[source]¶
        +pylorax.api.recipes.recipe_filename(name)[source]¶

        Return the toml filename for a recipe

        Replaces spaces with '-' and appends '.toml'

        -pylorax.api.recipes.recipe_from_dict(recipe_dict)[source]¶
        +pylorax.api.recipes.recipe_from_dict(recipe_dict)[source]¶

        Create a Recipe object from a plain dict.

        Parameters
        @@ -2645,7 +2713,7 @@ commit:filename

        -pylorax.api.recipes.recipe_from_file(recipe_path)[source]¶
        +pylorax.api.recipes.recipe_from_file(recipe_path)[source]¶

        Return a recipe file as a Recipe object

        Parameters
        @@ -2662,7 +2730,7 @@ commit:filename

        -pylorax.api.recipes.recipe_from_toml(recipe_str)[source]¶
        +pylorax.api.recipes.recipe_from_toml(recipe_str)[source]¶

        Create a Recipe object from a toml string.

        Parameters
        @@ -2682,7 +2750,7 @@ commit:filename

        -pylorax.api.recipes.repo_file_exists(repo, branch, filename)[source]¶
        +pylorax.api.recipes.repo_file_exists(repo, branch, filename)[source]¶

        Return True if the filename exists on the branch

        Parameters
        @@ -2703,7 +2771,7 @@ commit:filename

        -pylorax.api.recipes.revert_file(repo, branch, filename, commit)[source]¶
        +pylorax.api.recipes.revert_file(repo, branch, filename, commit)[source]¶

        Revert the contents of a file to that of a previous commit

        Parameters
        @@ -2728,7 +2796,7 @@ commit:filename

        -pylorax.api.recipes.revert_recipe(repo, branch, recipe_name, commit)[source]¶
        +pylorax.api.recipes.revert_recipe(repo, branch, recipe_name, commit)[source]¶

        Revert the contents of a recipe to that of a previous commit

        Parameters
        @@ -2753,7 +2821,7 @@ commit:filename

        -pylorax.api.recipes.tag_file_commit(repo, branch, filename)[source]¶
        +pylorax.api.recipes.tag_file_commit(repo, branch, filename)[source]¶

        Tag a file's most recent commit

        Parameters
        @@ -2781,7 +2849,7 @@ If the commit has already been tagged it will return false.

        -pylorax.api.recipes.tag_recipe_commit(repo, branch, recipe_name)[source]¶
        +pylorax.api.recipes.tag_recipe_commit(repo, branch, recipe_name)[source]¶

        Tag a file's most recent commit

        Parameters
        @@ -2806,7 +2874,7 @@ If the commit has already been tagged it will return false.

        -pylorax.api.recipes.write_commit(repo, branch, filename, message, content)[source]¶
        +pylorax.api.recipes.write_commit(repo, branch, filename, message, content)[source]¶

        Make a new commit to a repository's branch

        Parameters
        @@ -2838,23 +2906,23 @@ If the commit has already been tagged it will return false.

        pylorax.api.server module¶

        -class pylorax.api.server.GitLock(repo, lock, dir)¶
        +class pylorax.api.server.GitLock(repo, lock, dir)¶

        Bases: tuple

        -
        +
        -dir¶
        +property dir¶

        Alias for field number 2

        -
        +
        -lock¶
        +property lock¶

        Alias for field number 1

        -
        +
        -repo¶
        +property repo¶

        Alias for field number 0

        @@ -2865,12 +2933,12 @@ If the commit has already been tagged it will return false.

        pylorax.api.timestamp module¶

        -pylorax.api.timestamp.timestamp_dict(destdir)[source]¶
        +pylorax.api.timestamp.timestamp_dict(destdir)[source]¶
        -pylorax.api.timestamp.write_timestamp(destdir, ty)[source]¶
        +pylorax.api.timestamp.write_timestamp(destdir, ty)[source]¶
        @@ -2878,18 +2946,18 @@ If the commit has already been tagged it will return false.

        pylorax.api.toml module¶

        -exception pylorax.api.toml.TomlError(msg, doc, pos)[source]¶
        +exception pylorax.api.toml.TomlError(msg, doc, pos)[source]¶

        Bases: toml.decoder.TomlDecodeError

        -pylorax.api.toml.dumps(o)[source]¶
        +pylorax.api.toml.dumps(o)[source]¶
        -pylorax.api.toml.loads(s)[source]¶
        +pylorax.api.toml.loads(s)[source]¶
        @@ -2926,7 +2994,7 @@ a new branch use the new or workspace routes with ?bra store the new blueprint on the new branch.

        -pylorax.api.v0.blueprint_exists(branch, blueprint_name)[source]¶
        +pylorax.api.v0.blueprint_exists(branch, blueprint_name)[source]¶

        Return True if the blueprint exists

        Parameters
        @@ -2941,7 +3009,7 @@ store the new blueprint on the new branch.

        -pylorax.api.v0.take_limits(iterable, offset, limit)[source]¶
        +pylorax.api.v0.take_limits(iterable, offset, limit)[source]¶

        Apply offset and limit to an iterable object

        Parameters
        @@ -2959,7 +3027,7 @@ store the new blueprint on the new branch.

        -pylorax.api.v0.v0_blueprints_changes(blueprint_names)[source]¶
        +pylorax.api.v0.v0_blueprints_changes(blueprint_names)[source]¶

        Return the changes to a blueprint or list of blueprints

        /api/v0/blueprints/changes/<blueprint_names>[?offset=0&limit=20]

        @@ -3024,7 +3092,7 @@ hash can be passed to /api/v0/blueprints/diff/ to retrieve the exac
        -pylorax.api.v0.v0_blueprints_delete(blueprint_name)[source]¶
        +pylorax.api.v0.v0_blueprints_delete(blueprint_name)[source]¶

        Delete a blueprint from git

        DELETE /api/v0/blueprints/delete/<blueprint_name>

        @@ -3039,7 +3107,7 @@ error response with it set to false and an error message included.

        -pylorax.api.v0.v0_blueprints_delete_workspace(blueprint_name)[source]¶
        +pylorax.api.v0.v0_blueprints_delete_workspace(blueprint_name)[source]¶

        Delete a blueprint from the workspace

        DELETE /api/v0/blueprints/workspace/<blueprint_name>

        @@ -3053,7 +3121,7 @@ error response with it set to false and an error message included.

        -pylorax.api.v0.v0_blueprints_depsolve(blueprint_names)[source]¶
        +pylorax.api.v0.v0_blueprints_depsolve(blueprint_names)[source]¶

        Return the dependencies for a blueprint

        /api/v0/blueprints/depsolve/<blueprint_names>

        @@ -3133,7 +3201,7 @@ and packages in modules, and any error will be in errors
        -pylorax.api.v0.v0_blueprints_diff(blueprint_name, from_commit, to_commit)[source]¶
        +pylorax.api.v0.v0_blueprints_diff(blueprint_name, from_commit, to_commit)[source]¶

        Return the differences between two commits of a blueprint

        /api/v0/blueprints/diff/<blueprint_name>/<from_commit>/<to_commit>

        @@ -3182,7 +3250,7 @@ The contents for these will be the old/new values for them.

        -pylorax.api.v0.v0_blueprints_freeze(blueprint_names)[source]¶
        +pylorax.api.v0.v0_blueprints_freeze(blueprint_names)[source]¶

        Return the blueprint with the exact modules and packages selected by depsolve

        /api/v0/blueprints/freeze/<blueprint_names>

        @@ -3228,7 +3296,7 @@ to the exact versions chosen by depsolving the blueprint.

        -pylorax.api.v0.v0_blueprints_info(blueprint_names)[source]¶
        +pylorax.api.v0.v0_blueprints_info(blueprint_names)[source]¶

        Return the contents of the blueprint, or a list of blueprints

        /api/v0/blueprints/info/<blueprint_names>[?format=<json|toml>]

        @@ -3294,7 +3362,7 @@ errors will both be returned.

        -pylorax.api.v0.v0_blueprints_list()[source]¶
        +pylorax.api.v0.v0_blueprints_list()[source]¶

        List the available blueprints on a branch.

        /api/v0/blueprints/list

        @@ -3316,7 +3384,7 @@ errors will both be returned.

        -pylorax.api.v0.v0_blueprints_new()[source]¶
        +pylorax.api.v0.v0_blueprints_new()[source]¶

        Commit a new blueprint

        POST /api/v0/blueprints/new

        @@ -3330,7 +3398,7 @@ error response with it set to false and an error message included.

        -pylorax.api.v0.v0_blueprints_tag(blueprint_name)[source]¶
        +pylorax.api.v0.v0_blueprints_tag(blueprint_name)[source]¶

        Tag a blueprint's latest blueprint commit as a 'revision'

        POST /api/v0/blueprints/tag/<blueprint_name>

        @@ -3345,7 +3413,7 @@ error response with it set to false and an error message included.

        -pylorax.api.v0.v0_blueprints_undo(blueprint_name, commit)[source]¶
        +pylorax.api.v0.v0_blueprints_undo(blueprint_name, commit)[source]¶

        Undo changes to a blueprint by reverting to a previous commit.

        POST /api/v0/blueprints/undo/<blueprint_name>/<commit>

        @@ -3358,7 +3426,7 @@ error response with it set to false and an error message included.

        -pylorax.api.v0.v0_blueprints_workspace()[source]¶
        +pylorax.api.v0.v0_blueprints_workspace()[source]¶

        Write a blueprint to the workspace

        POST /api/v0/blueprints/workspace

        @@ -3374,7 +3442,7 @@ error response with it set to false and an error message included.

        -pylorax.api.v0.v0_compose_cancel(uuid)[source]¶
        +pylorax.api.v0.v0_compose_cancel(uuid)[source]¶

        Cancel a running compose and delete its results directory

        DELETE /api/v0/compose/cancel/<uuid>

        @@ -3392,7 +3460,7 @@ status of True if it is successful.

        -pylorax.api.v0.v0_compose_delete(uuids)[source]¶
        +pylorax.api.v0.v0_compose_delete(uuids)[source]¶

        Delete the compose results for the listed uuids

        DELETE /api/v0/compose/delete/<uuids>

        @@ -3414,7 +3482,7 @@ status of True if it is successful.

        -pylorax.api.v0.v0_compose_failed()[source]¶
        +pylorax.api.v0.v0_compose_failed()[source]¶

        Return the list of failed composes

        /api/v0/compose/failed

        @@ -3440,7 +3508,7 @@ status of True if it is successful.

        -pylorax.api.v0.v0_compose_finished()[source]¶
        +pylorax.api.v0.v0_compose_finished()[source]¶

        Return the list of finished composes

        /api/v0/compose/finished

        @@ -3475,7 +3543,7 @@ status of True if it is successful.

        -pylorax.api.v0.v0_compose_image(uuid)[source]¶
        +pylorax.api.v0.v0_compose_image(uuid)[source]¶

        Return the output image for the build

        /api/v0/compose/image/<uuid>

        @@ -3486,7 +3554,7 @@ from the build with the UUID as a prefix. eg. UUID-root.tar.xz or UUID-boot.iso.
        -pylorax.api.v0.v0_compose_info(uuid)[source]¶
        +pylorax.api.v0.v0_compose_info(uuid)[source]¶

        Return detailed info about a compose

        /api/v0/compose/info/<uuid>

        @@ -3540,13 +3608,15 @@ contain the following information:

        -pylorax.api.v0.v0_compose_log_tail(uuid)[source]¶
        -

        Return the end of the main anaconda.log, defaults to 1Mbytes

        -

        /api/v0/compose/log/<uuid>[?size=kbytes]

        +pylorax.api.v0.v0_compose_log_tail(uuid)[source]¶ +

        Return the tail of the most currently relevant log

        +

        /api/v0/compose/log/<uuid>[?size=KiB]

        -

        Returns the end of the anaconda.log. The size parameter is optional and defaults to 1Mbytes -if it is not included. The returned data is raw text from the end of the logfile, starting on -a line boundry.

        +

        Returns the end of either the anaconda log, the packaging log, or the +composer logs, depending on the progress of the compose. The size +parameter is optional and defaults to 1 MiB if it is not included. The +returned data is raw text from the end of the log file, starting on a +line boundary.

        Example:

        12:59:24,222 INFO anaconda: Running Thread: AnaConfigurationThread (140629395244800)
         12:59:24,223 INFO anaconda: Configuring installed system
        @@ -3570,7 +3640,7 @@ a line boundry.

        -pylorax.api.v0.v0_compose_logs(uuid)[source]¶
        +pylorax.api.v0.v0_compose_logs(uuid)[source]¶

        Return a tar of the metadata for the build

        /api/v0/compose/logs/<uuid>

        @@ -3583,7 +3653,7 @@ UUID-logs.tar

        -pylorax.api.v0.v0_compose_metadata(uuid)[source]¶
        +pylorax.api.v0.v0_compose_metadata(uuid)[source]¶

        Return a tar of the metadata for the build

        /api/v0/compose/metadata/<uuid>

        @@ -3598,7 +3668,7 @@ UUID-metadata.tar

        -pylorax.api.v0.v0_compose_queue()[source]¶
        +pylorax.api.v0.v0_compose_queue()[source]¶

        Return the status of the new and running queues

        /api/v0/compose/queue

        @@ -3640,7 +3710,7 @@ and the build that is running.

        -pylorax.api.v0.v0_compose_results(uuid)[source]¶
        +pylorax.api.v0.v0_compose_results(uuid)[source]¶

        Return a tar of the metadata and the results for the build

        /api/v0/compose/results/<uuid>

        @@ -3655,7 +3725,7 @@ UUID.tar

        -pylorax.api.v0.v0_compose_start()[source]¶
        +pylorax.api.v0.v0_compose_start()[source]¶

        Start a compose

        The body of the post should have these fields:

        blueprint_name - The blueprint name from /blueprints/list/ @@ -3690,7 +3760,7 @@ build and add it to the queue. It returns the build uuid and a status if it succ

        -pylorax.api.v0.v0_compose_status(uuids)[source]¶
        +pylorax.api.v0.v0_compose_status(uuids)[source]¶

        Return the status of the listed uuids

        /api/v0/compose/status/<uuids>[?blueprint=<blueprint_name>&status=<compose_status>&type=<compose_type>]

        @@ -3726,7 +3796,7 @@ details for all composes.

        -pylorax.api.v0.v0_compose_types()[source]¶
        +pylorax.api.v0.v0_compose_types()[source]¶

        Return the list of enabled output types

        (only enabled types are returned)

        /api/v0/compose/types

        @@ -3748,7 +3818,7 @@ details for all composes.

        -pylorax.api.v0.v0_modules_info(module_names)[source]¶
        +pylorax.api.v0.v0_modules_info(module_names)[source]¶

        Return detailed information about the listed modules

        /api/v0/modules/info/<module_names>

        @@ -3789,7 +3859,7 @@ details for all composes.

        -pylorax.api.v0.v0_modules_list(module_names=None)[source]¶
        +pylorax.api.v0.v0_modules_list(module_names=None)[source]¶

        List available modules, filtering by module_names

        /api/v0/modules/list[?offset=0&limit=20]

        @@ -3846,7 +3916,7 @@ arguments.

        -pylorax.api.v0.v0_projects_depsolve(project_names)[source]¶
        +pylorax.api.v0.v0_projects_depsolve(project_names)[source]¶

        Return detailed information about the listed projects

        /api/v0/projects/depsolve/<project_names>

        @@ -3886,7 +3956,7 @@ to satisfy the request.

        -pylorax.api.v0.v0_projects_info(project_names)[source]¶
        +pylorax.api.v0.v0_projects_info(project_names)[source]¶

        Return detailed information about the listed projects

        /api/v0/projects/info/<project_names>

        @@ -3929,7 +3999,7 @@ of the package along with the list of available builds.

        -pylorax.api.v0.v0_projects_list()[source]¶
        +pylorax.api.v0.v0_projects_list()[source]¶

        List all of the available projects/packages

        /api/v0/projects/list[?offset=0&limit=20]

        @@ -3958,7 +4028,7 @@ but this can be changed by setting the offset and limit
        -pylorax.api.v0.v0_projects_source_delete(source_name)[source]¶
        +pylorax.api.v0.v0_projects_source_delete(source_name)[source]¶

        Delete the named source and return a status response

        DELETE /api/v0/projects/source/delete/<source-name>

        @@ -3971,7 +4041,7 @@ error response with it set to false and an error message included.

        -pylorax.api.v0.v0_projects_source_info(source_names)[source]¶
        +pylorax.api.v0.v0_projects_source_info(source_names)[source]¶

        Return detailed info about the list of sources

        /api/v0/projects/source/info/<source-names>

        @@ -4004,7 +4074,7 @@ will have it set to false. System sources cannot be changed or deleted.

        -pylorax.api.v0.v0_projects_source_list()[source]¶
        +pylorax.api.v0.v0_projects_source_list()[source]¶

        Return the list of source names

        /api/v0/projects/source/list

        @@ -4025,7 +4095,7 @@ will have it set to false. System sources cannot be changed or deleted.

        -pylorax.api.v0.v0_projects_source_new()[source]¶
        +pylorax.api.v0.v0_projects_source_new()[source]¶

        Add a new package source. Or change an existing one

        POST /api/v0/projects/source/new

        @@ -4065,7 +4135,7 @@ of the new version of the source. It will overwrite the previous one.

        pylorax.api.workspace module¶

        -pylorax.api.workspace.workspace_delete(repo, branch, recipe_name)[source]¶
        +pylorax.api.workspace.workspace_delete(repo, branch, recipe_name)[source]¶

        Delete the recipe from the workspace

        Parameters
        @@ -4086,7 +4156,7 @@ of the new version of the source. It will overwrite the previous one.

        -pylorax.api.workspace.workspace_dir(repo, branch)[source]¶
        +pylorax.api.workspace.workspace_dir(repo, branch)[source]¶

        Create the workspace's path from a Repository and branch

        Parameters
        @@ -4106,7 +4176,7 @@ of the new version of the source. It will overwrite the previous one.

        -pylorax.api.workspace.workspace_read(repo, branch, recipe_name)[source]¶
        +pylorax.api.workspace.workspace_read(repo, branch, recipe_name)[source]¶

        Read a Recipe from the branch's workspace

        Parameters
        @@ -4130,7 +4200,7 @@ of the new version of the source. It will overwrite the previous one.

        -pylorax.api.workspace.workspace_write(repo, branch, recipe)[source]¶
        +pylorax.api.workspace.workspace_write(repo, branch, recipe)[source]¶

        Write a recipe to the workspace

        Parameters
        diff --git a/pylorax.html b/pylorax.html index 19909fa2..84f916fc 100644 --- a/pylorax.html +++ b/pylorax.html @@ -8,7 +8,7 @@ - pylorax package — Lorax 31.7 documentation + pylorax package — Lorax 31.9 documentation @@ -60,7 +60,7 @@
        - 31.7 + 31.9
        @@ -235,42 +235,42 @@

        pylorax.base module¶

        -class pylorax.base.BaseLoraxClass[source]¶
        +class pylorax.base.BaseLoraxClass[source]¶

        Bases: object

        -pcritical(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        +pcritical(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        -pdebug(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        +pdebug(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        -perror(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        +perror(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        -pinfo(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        +pinfo(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        -pwarning(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        +pwarning(msg, fobj=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[source]¶
        -class pylorax.base.DataHolder(**kwargs)[source]¶
        +class pylorax.base.DataHolder(**kwargs)[source]¶

        Bases: dict

        -copy() → a shallow copy of D[source]¶
        +copy() → a shallow copy of D[source]¶
        @@ -280,11 +280,11 @@

        pylorax.buildstamp module¶

        -class pylorax.buildstamp.BuildStamp(product, version, bugurl, isfinal, buildarch, variant='')[source]¶
        +class pylorax.buildstamp.BuildStamp(product, version, bugurl, isfinal, buildarch, variant='')[source]¶

        Bases: object

        -write(outfile)[source]¶
        +write(outfile)[source]¶
        @@ -294,13 +294,13 @@

        pylorax.cmdline module¶

        -pylorax.cmdline.lmc_parser(dracut_default='')[source]¶
        +pylorax.cmdline.lmc_parser(dracut_default='')[source]¶

        Return a ArgumentParser object for live-media-creator.

        -pylorax.cmdline.lorax_parser(dracut_default='')[source]¶
        +pylorax.cmdline.lorax_parser(dracut_default='')[source]¶

        Return the ArgumentParser for lorax

        @@ -309,7 +309,7 @@

        pylorax.creator module¶

        -class pylorax.creator.FakeDNF(conf)[source]¶
        +class pylorax.creator.FakeDNF(conf)[source]¶

        Bases: object

        A minimal DNF object suitable for passing to RuntimeBuilder

        lmc uses RuntimeBuilder to run the arch specific iso creation @@ -317,14 +317,14 @@ templates, so the the installroot config value is the important part of this. Everything else should be a nop.

        -reset()[source]¶
        +reset()[source]¶
        -pylorax.creator.calculate_disk_size(opts, ks)[source]¶
        +pylorax.creator.calculate_disk_size(opts, ks)[source]¶

        Calculate the disk size from the kickstart

        Parameters
        @@ -345,7 +345,7 @@ this. Everything else should be a nop.

        -pylorax.creator.check_kickstart(ks, opts)[source]¶
        +pylorax.creator.check_kickstart(ks, opts)[source]¶

        Check the parsed kickstart object for errors

        Parameters
        @@ -365,7 +365,7 @@ this. Everything else should be a nop.

        -pylorax.creator.create_pxe_config(template, images_dir, live_image_name, add_args=None)[source]¶
        +pylorax.creator.create_pxe_config(template, images_dir, live_image_name, add_args=None)[source]¶

        Create template for pxe to live configuration

        Parameters
        @@ -380,7 +380,7 @@ this. Everything else should be a nop.

        -pylorax.creator.find_ostree_root(phys_root)[source]¶
        +pylorax.creator.find_ostree_root(phys_root)[source]¶

        Find root of ostree deployment

        Parameters
        @@ -400,7 +400,7 @@ this. Everything else should be a nop.

        -pylorax.creator.get_arch(mount_dir)[source]¶
        +pylorax.creator.get_arch(mount_dir)[source]¶

        Get the kernel arch

        Returns
        @@ -414,7 +414,7 @@ this. Everything else should be a nop.

        -pylorax.creator.is_image_mounted(disk_img)[source]¶
        +pylorax.creator.is_image_mounted(disk_img)[source]¶

        Check to see if the disk_img is mounted

        Returns
        @@ -428,7 +428,7 @@ this. Everything else should be a nop.

        -pylorax.creator.make_appliance(disk_img, name, template, outfile, networks=None, ram=1024, vcpus=1, arch=None, title='Linux', project='Linux', releasever='29')[source]¶
        +pylorax.creator.make_appliance(disk_img, name, template, outfile, networks=None, ram=1024, vcpus=1, arch=None, title='Linux', project='Linux', releasever='29')[source]¶

        Generate an appliance description file

        Parameters
        @@ -451,7 +451,7 @@ this. Everything else should be a nop.

        -pylorax.creator.make_image(opts, ks, cancel_func=None)[source]¶
        +pylorax.creator.make_image(opts, ks, cancel_func=None)[source]¶

        Install to a disk image

        Parameters
        @@ -473,7 +473,7 @@ this. Everything else should be a nop.

        -pylorax.creator.make_live_images(opts, work_dir, disk_img)[source]¶
        +pylorax.creator.make_live_images(opts, work_dir, disk_img)[source]¶

        Create live images from direcory or rootfs image

        Parameters
        @@ -497,7 +497,7 @@ it will return None and log the error.

        -pylorax.creator.make_livecd(opts, mount_dir, work_dir)[source]¶
        +pylorax.creator.make_livecd(opts, mount_dir, work_dir)[source]¶

        Take the content from the disk image and make a livecd out of it

        Parameters
        @@ -521,7 +521,7 @@ root=live:CDLABEL=<volid> rd.live.image

        -pylorax.creator.make_runtime(opts, mount_dir, work_dir, size=None)[source]¶
        +pylorax.creator.make_runtime(opts, mount_dir, work_dir, size=None)[source]¶

        Make the squashfs image from a directory

        Parameters
        @@ -535,35 +535,9 @@ root=live:CDLABEL=<volid> rd.live.image

        -
        -
        -pylorax.creator.make_squashfs(opts, disk_img, work_dir)[source]¶
        -

        Create a squashfs image of an unpartitioned filesystem disk image

        -
        -
        Parameters
        -
          -
        • disk_img (str) -- Path to the unpartitioned filesystem disk image

        • -
        • work_dir (str) -- Output compressed image to work_dir+images/install.img

        • -
        • compression (str) -- Compression type to use

        • -
        -
        -
        Returns
        -

        True if squashfs creation was successful. False if there was an error.

        -
        -
        Return type
        -

        bool

        -
        -
        -

        Take disk_img and put it into LiveOS/rootfs.img and squashfs this -tree into work_dir+images/install.img

        -

        fsck.ext4 is run on the disk image to make sure there are no errors and to zero -out any deleted blocks to make it compress better. If this fails for any reason -it will return False and log the error.

        -
        -
        -pylorax.creator.mount_boot_part_over_root(img_mount)[source]¶
        +pylorax.creator.mount_boot_part_over_root(img_mount)[source]¶

        Mount boot partition to /boot of root fs mounted in img_mount

        Used for OSTree so it finds deployment configurations on live rootfs

        param img_mount: object with mounted disk image root partition @@ -572,7 +546,7 @@ type img_mount: imgutils.PartitionMount

        -pylorax.creator.rebuild_initrds_for_live(opts, sys_root_dir, results_dir)[source]¶
        +pylorax.creator.rebuild_initrds_for_live(opts, sys_root_dir, results_dir)[source]¶

        Rebuild intrds for pxe live image (root=live:http://)

        Parameters
        @@ -587,7 +561,7 @@ type img_mount: imgutils.PartitionMount

        -pylorax.creator.run_creator(opts, cancel_func=None)[source]¶
        +pylorax.creator.run_creator(opts, cancel_func=None)[source]¶

        Run the image creator process

        Parameters
        @@ -610,7 +584,7 @@ See the cmdline --help for livemedia-creator for the possible options

        -pylorax.creator.squashfs_args(opts)[source]¶
        +pylorax.creator.squashfs_args(opts)[source]¶

        Returns the compression type and args to use when making squashfs

        Parameters
        @@ -630,7 +604,7 @@ See the cmdline --help for livemedia-creator for the possible options

        pylorax.decorators module¶

        -pylorax.decorators.singleton(cls)[source]¶
        +pylorax.decorators.singleton(cls)[source]¶
        @@ -638,11 +612,11 @@ See the cmdline --help for livemedia-creator for the possible options

        pylorax.discinfo module¶

        -class pylorax.discinfo.DiscInfo(release, basearch)[source]¶
        +class pylorax.discinfo.DiscInfo(release, basearch)[source]¶

        Bases: object

        -write(outfile)[source]¶
        +write(outfile)[source]¶
        @@ -652,7 +626,7 @@ See the cmdline --help for livemedia-creator for the possible options

        pylorax.dnfbase module¶

        -pylorax.dnfbase.get_dnf_base_object(installroot, sources, mirrorlists=None, repos=None, enablerepos=None, disablerepos=None, tempdir='/var/tmp', proxy=None, releasever='29', cachedir=None, logdir=None, sslverify=True, dnfplugins=None)[source]¶
        +pylorax.dnfbase.get_dnf_base_object(installroot, sources, mirrorlists=None, repos=None, enablerepos=None, disablerepos=None, tempdir='/var/tmp', proxy=None, releasever='29', cachedir=None, logdir=None, sslverify=True, dnfplugins=None)[source]¶

        Create a dnf Base object and setup the repositories and installroot

        Parameters
        @@ -679,37 +653,37 @@ If cachedir is None a dnf.cache directory is created inside tmpdir

        pylorax.dnfhelper module¶

        -class pylorax.dnfhelper.LoraxDownloadCallback[source]¶
        +class pylorax.dnfhelper.LoraxDownloadCallback[source]¶

        Bases: DownloadProgress

        -end(payload, status, msg)[source]¶
        +end(payload, status, msg)[source]¶
        -progress(payload, done)[source]¶
        +progress(payload, done)[source]¶
        -start(total_files, total_size, total_drpms=0)[source]¶
        +start(total_files, total_size, total_drpms=0)[source]¶
        -class pylorax.dnfhelper.LoraxRpmCallback[source]¶
        +class pylorax.dnfhelper.LoraxRpmCallback[source]¶

        Bases: TransactionProgress

        -error(message)[source]¶
        +error(message)[source]¶
        -progress(package, action, ti_done, ti_total, ts_done, ts_total)[source]¶
        +progress(package, action, ti_done, ti_total, ts_done, ts_total)[source]¶
        @@ -719,18 +693,18 @@ If cachedir is None a dnf.cache directory is created inside tmpdir

        pylorax.executils module¶

        -class pylorax.executils.ExecProduct(rc, stdout, stderr)[source]¶
        +class pylorax.executils.ExecProduct(rc, stdout, stderr)[source]¶

        Bases: object

        -pylorax.executils.augmentEnv()[source]¶
        +pylorax.executils.augmentEnv()[source]¶
        -pylorax.executils.execReadlines(command, argv, stdin=None, root='/', env_prune=None, filter_stderr=False, callback=<function <lambda>>, env_add=None, reset_handlers=True, reset_lang=True)[source]¶
        +pylorax.executils.execReadlines(command, argv, stdin=None, root='/', env_prune=None, filter_stderr=False, callback=<function <lambda>>, env_add=None, reset_handlers=True, reset_lang=True)[source]¶

        Execute an external command and return the line output of the command in real-time.

        This method assumes that there is a reasonably low delay between the @@ -766,7 +740,7 @@ This returns an iterator with the lines from the command until it has finished

        -pylorax.executils.execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter_stderr=False, raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True)[source]¶
        +pylorax.executils.execWithCapture(command, argv, stdin=None, root='/', log_output=True, filter_stderr=False, raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True)[source]¶

        Run an external program and capture standard out and err.

        Parameters
        @@ -791,7 +765,7 @@ This returns an iterator with the lines from the command until it has finished
        -pylorax.executils.execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune=None, log_output=True, binary_output=False, raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True)[source]¶
        +pylorax.executils.execWithRedirect(command, argv, stdin=None, stdout=None, root='/', env_prune=None, log_output=True, binary_output=False, raise_err=False, callback=None, env_add=None, reset_handlers=True, reset_lang=True)[source]¶

        Run an external program and redirect the output to a file.

        Parameters
        @@ -819,19 +793,19 @@ This returns an iterator with the lines from the command until it has finished
        -pylorax.executils.runcmd(cmd, **kwargs)[source]¶
        +pylorax.executils.runcmd(cmd, **kwargs)[source]¶

        run execWithRedirect with raise_err=True

        -pylorax.executils.runcmd_output(cmd, **kwargs)[source]¶
        +pylorax.executils.runcmd_output(cmd, **kwargs)[source]¶

        run execWithCapture with raise_err=True

        -pylorax.executils.setenv(name, value)[source]¶
        +pylorax.executils.setenv(name, value)[source]¶

        Set an environment variable to be used by child processes.

        This method does not modify os.environ for the running process, which is not thread-safe. If setenv has already been called for a particular @@ -848,7 +822,7 @@ variable name, the old value is overwritten.

        -pylorax.executils.startProgram(argv, root='/', stdin=None, stdout=-1, stderr=-2, env_prune=None, env_add=None, reset_handlers=True, reset_lang=True, **kwargs)[source]¶
        +pylorax.executils.startProgram(argv, root='/', stdin=None, stdout=-1, stderr=-2, env_prune=None, env_add=None, reset_handlers=True, reset_lang=True, **kwargs)[source]¶

        Start an external program and return the Popen object.

        The root and reset_handlers arguments are handled by passing a preexec_fn argument to subprocess.Popen, but an additional preexec_fn @@ -881,32 +855,32 @@ last.

        pylorax.imgutils module¶

        -class pylorax.imgutils.DMDev(dev, size, name=None)[source]¶
        +class pylorax.imgutils.DMDev(dev, size, name=None)[source]¶

        Bases: object

        -class pylorax.imgutils.LoopDev(filename, size=None)[source]¶
        +class pylorax.imgutils.LoopDev(filename, size=None)[source]¶

        Bases: object

        -class pylorax.imgutils.Mount(dev, opts='', mnt=None)[source]¶
        +class pylorax.imgutils.Mount(dev, opts='', mnt=None)[source]¶

        Bases: object

        -class pylorax.imgutils.PartitionMount(disk_img, mount_ok=None, submount=None)[source]¶
        +class pylorax.imgutils.PartitionMount(disk_img, mount_ok=None, submount=None)[source]¶

        Bases: object

        Mount a partitioned image file using kpartx

        -pylorax.imgutils.compress(command, root, outfile, compression='xz', compressargs=None)[source]¶
        +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. @@ -915,7 +889,7 @@ compressargs will be used on the compression commandline.

        -pylorax.imgutils.copytree(src, dest, preserve=True)[source]¶
        +pylorax.imgutils.copytree(src, dest, preserve=True)[source]¶

        Copy a tree of files using cp -a, thus preserving modes, timestamps, links, acls, sparse files, xattrs, selinux contexts, etc. If preserve is False, uses cp -R (useful for modeless filesystems) @@ -924,7 +898,7 @@ raises CalledProcessError if copy fails.

        -pylorax.imgutils.default_image_name(compression, basename)[source]¶
        +pylorax.imgutils.default_image_name(compression, basename)[source]¶

        Return a default image name with the correct suffix for the compression type.

        Parameters
        @@ -942,7 +916,7 @@ raises CalledProcessError if copy fails.

        -pylorax.imgutils.dm_attach(dev, size, name=None)[source]¶
        +pylorax.imgutils.dm_attach(dev, size, name=None)[source]¶

        Attach a devicemapper device to the given device, with the given size. If name is None, a random name will be chosen. Returns the device name. raises CalledProcessError if dmsetup fails.

        @@ -950,13 +924,13 @@ raises CalledProcessError if dmsetup fails.

        -pylorax.imgutils.dm_detach(dev)[source]¶
        +pylorax.imgutils.dm_detach(dev)[source]¶

        Detach the named devicemapper device. Returns False if dmsetup fails.

        -pylorax.imgutils.do_grafts(grafts, dest, preserve=True)[source]¶
        +pylorax.imgutils.do_grafts(grafts, dest, preserve=True)[source]¶

        Copy each of the items listed in grafts into dest. If the key ends with '/' it's assumed to be a directory which should be created, otherwise just the leading directories will be created.

        @@ -964,19 +938,19 @@ created, otherwise just the leading directories will be created.

        -pylorax.imgutils.estimate_size(rootdir, graft=None, fstype=None, blocksize=4096, overhead=256)[source]¶
        +pylorax.imgutils.estimate_size(rootdir, graft=None, fstype=None, blocksize=4096, overhead=256)[source]¶
        -pylorax.imgutils.get_loop_name(path)[source]¶
        +pylorax.imgutils.get_loop_name(path)[source]¶

        Return the loop device associated with the path. Raises RuntimeError if more than one loop is associated

        -pylorax.imgutils.kpartx_disk_img(disk_img)[source]¶
        +pylorax.imgutils.kpartx_disk_img(disk_img)[source]¶

        Attach a disk image's partitions to /dev/loopX using kpartx

        Parameters
        @@ -993,7 +967,7 @@ Raises RuntimeError if more than one loop is associated

        -pylorax.imgutils.loop_attach(outfile)[source]¶
        +pylorax.imgutils.loop_attach(outfile)[source]¶

        Attach a loop device to the given file. Return the loop device name.

        On rare occasions it appears that the device never shows up, some experiments seem to indicate that it may be a race with another process using /dev/loop* devices.

        @@ -1003,13 +977,13 @@ seem to indicate that it may be a race with another process using /dev/loop* dev
        -pylorax.imgutils.loop_detach(loopdev)[source]¶
        +pylorax.imgutils.loop_detach(loopdev)[source]¶

        Detach the given loop device. Return False on failure.

        -pylorax.imgutils.loop_waitfor(loop_dev, outfile)[source]¶
        +pylorax.imgutils.loop_waitfor(loop_dev, outfile)[source]¶

        Make sure the loop device is attached to the outfile.

        It seems that on rare occasions losetup can return before the /dev/loopX is ready for use, causing problems with mkfs. This tries to make sure that the @@ -1019,27 +993,27 @@ loop device really is associated with the backing file before continuing.

        -pylorax.imgutils.mkbtrfsimg(rootdir, outfile, size=None, label='', mountargs='', graft=None)[source]¶
        +pylorax.imgutils.mkbtrfsimg(rootdir, outfile, size=None, label='', mountargs='', graft=None)[source]¶
        -pylorax.imgutils.mkcpio(root, outfile, compression='xz', compressargs=None)[source]¶
        +pylorax.imgutils.mkcpio(root, outfile, compression='xz', compressargs=None)[source]¶
        -pylorax.imgutils.mkdosimg(rootdir, outfile, size=None, label='', mountargs='shortname=winnt, umask=0077', graft=None)[source]¶
        +pylorax.imgutils.mkdosimg(rootdir, outfile, size=None, label='', mountargs='shortname=winnt, umask=0077', graft=None)[source]¶
        -pylorax.imgutils.mkext4img(rootdir, outfile, size=None, label='', mountargs='', graft=None)[source]¶
        +pylorax.imgutils.mkext4img(rootdir, outfile, size=None, label='', mountargs='', graft=None)[source]¶
        -pylorax.imgutils.mkfsimage(fstype, rootdir, outfile, size=None, mkfsargs=None, mountargs='', graft=None)[source]¶
        +pylorax.imgutils.mkfsimage(fstype, rootdir, outfile, size=None, mkfsargs=None, mountargs='', graft=None)[source]¶

        Generic filesystem image creation function. fstype should be a filesystem type - "mkfs.${fstype}" must exist. graft should be a dict: {"some/path/in/image": "local/file/or/dir"}; @@ -1049,7 +1023,7 @@ Will raise CalledProcessError if something goes wrong.

        -pylorax.imgutils.mkfsimage_from_disk(diskimage, fsimage, img_size=None, label='Anaconda')[source]¶
        +pylorax.imgutils.mkfsimage_from_disk(diskimage, fsimage, img_size=None, label='Anaconda')[source]¶

        Copy the / partition of a partitioned disk image to an un-partitioned disk image.

        @@ -1067,12 +1041,12 @@ it as small as possible

        -pylorax.imgutils.mkhfsimg(rootdir, outfile, size=None, label='', mountargs='', graft=None)[source]¶
        +pylorax.imgutils.mkhfsimg(rootdir, outfile, size=None, label='', mountargs='', graft=None)[source]¶
        -pylorax.imgutils.mkqcow2(outfile, size, options=None)[source]¶
        +pylorax.imgutils.mkqcow2(outfile, size, options=None)[source]¶

        use qemu-img to create a file of the given size. options is a list of options passed to qemu-img

        Default format is qcow2, override by passing "-f", fmt @@ -1081,7 +1055,7 @@ in options.

        -pylorax.imgutils.mkqemu_img(outfile, size, options=None)[source]¶
        +pylorax.imgutils.mkqemu_img(outfile, size, options=None)[source]¶

        use qemu-img to create a file of the given size. options is a list of options passed to qemu-img

        Default format is qcow2, override by passing "-f", fmt @@ -1090,7 +1064,7 @@ in options.

        -pylorax.imgutils.mkrootfsimg(rootdir, outfile, label, size=2, sysroot='')[source]¶
        +pylorax.imgutils.mkrootfsimg(rootdir, outfile, label, size=2, sysroot='')[source]¶

        Make rootfs image from a directory

        Parameters
        @@ -1107,24 +1081,24 @@ in options.

        -pylorax.imgutils.mksparse(outfile, size)[source]¶
        +pylorax.imgutils.mksparse(outfile, size)[source]¶

        use os.ftruncate to create a sparse file of the given size.

        -pylorax.imgutils.mksquashfs(rootdir, outfile, compression='default', compressargs=None)[source]¶
        +pylorax.imgutils.mksquashfs(rootdir, outfile, compression='default', compressargs=None)[source]¶

        Make a squashfs image containing the given rootdir.

        -pylorax.imgutils.mktar(root, outfile, compression='xz', compressargs=None, selinux=True)[source]¶
        +pylorax.imgutils.mktar(root, outfile, compression='xz', compressargs=None, selinux=True)[source]¶
        -pylorax.imgutils.mount(dev, opts='', mnt=None)[source]¶
        +pylorax.imgutils.mount(dev, opts='', mnt=None)[source]¶

        Mount the given device at the given mountpoint, using the given opts. opts should be a comma-separated string of mount options. if mnt is none, a temporary directory will be created and its path will be @@ -1134,13 +1108,13 @@ raises CalledProcessError if mount fails.

        -pylorax.imgutils.round_to_blocks(size, blocksize)[source]¶
        +pylorax.imgutils.round_to_blocks(size, blocksize)[source]¶

        If size isn't a multiple of blocksize, round up to the next multiple

        -pylorax.imgutils.umount(mnt, lazy=False, maxretry=3, retrysleep=1.0, delete=True)[source]¶
        +pylorax.imgutils.umount(mnt, lazy=False, maxretry=3, retrysleep=1.0, delete=True)[source]¶

        Unmount the given mountpoint. If lazy is True, do a lazy umount (-l). If the mount was a temporary dir created by mount, it will be deleted. raises CalledProcessError if umount fails.

        @@ -1151,25 +1125,25 @@ raises CalledProcessError if umount fails.

        pylorax.installer module¶

        -exception pylorax.installer.InstallError[source]¶
        +exception pylorax.installer.InstallError[source]¶

        Bases: Exception

        -class pylorax.installer.QEMUInstall(opts, iso, ks_paths, disk_img, img_size=2048, kernel_args=None, memory=1024, vcpus=None, vnc=None, arch=None, cancel_func=None, virtio_host='127.0.0.1', virtio_port=6080, image_type=None, boot_uefi=False, ovmf_path=None)[source]¶
        +class pylorax.installer.QEMUInstall(opts, iso, ks_paths, disk_img, img_size=2048, kernel_args=None, memory=1024, vcpus=None, vnc=None, arch=None, cancel_func=None, virtio_host='127.0.0.1', virtio_port=6080, image_type=None, boot_uefi=False, ovmf_path=None)[source]¶

        Bases: object

        Run qemu using an iso and a kickstart

        -QEMU_CMDS = {'aarch64': 'qemu-system-aarch64', 'arm': 'qemu-system-arm', 'i386': 'qemu-system-i386', 'ppc64le': 'qemu-system-ppc64', 'x86_64': 'qemu-system-x86_64'}¶
        +QEMU_CMDS = {'aarch64': 'qemu-system-aarch64', 'arm': 'qemu-system-arm', 'i386': 'qemu-system-i386', 'ppc64le': 'qemu-system-ppc64', 'x86_64': 'qemu-system-x86_64'}¶
        -pylorax.installer.anaconda_cleanup(dirinstall_path)[source]¶
        +pylorax.installer.anaconda_cleanup(dirinstall_path)[source]¶

        Cleanup any leftover mounts from anaconda

        Parameters
        @@ -1187,7 +1161,7 @@ other mountpoints.

        -pylorax.installer.append_initrd(initrd, files)[source]¶
        +pylorax.installer.append_initrd(initrd, files)[source]¶

        Append files to an initrd.

        Parameters
        @@ -1212,7 +1186,7 @@ cpio archive.

        -pylorax.installer.create_vagrant_metadata(path, size=0)[source]¶
        +pylorax.installer.create_vagrant_metadata(path, size=0)[source]¶

        Create a default Vagrant metadata.json file

        Parameters
        @@ -1226,7 +1200,7 @@ cpio archive.

        -pylorax.installer.find_free_port(start=5900, end=5999, host='127.0.0.1')[source]¶
        +pylorax.installer.find_free_port(start=5900, end=5999, host='127.0.0.1')[source]¶

        Return first free port in range.

        Parameters
        @@ -1247,7 +1221,7 @@ cpio archive.

        -pylorax.installer.novirt_cancel_check(cancel_funcs, proc)[source]¶
        +pylorax.installer.novirt_cancel_check(cancel_funcs, proc)[source]¶

        Check to see if there has been an error in the logs

        Parameters
        @@ -1266,7 +1240,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, tar_img=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
        @@ -1285,7 +1259,7 @@ passed creates a qemu disk image or tarfile.

        -pylorax.installer.update_vagrant_metadata(path, size)[source]¶
        +pylorax.installer.update_vagrant_metadata(path, size)[source]¶

        Update the Vagrant metadata.json file

        Parameters
        @@ -1301,7 +1275,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, tar_img=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
        @@ -1324,7 +1298,7 @@ image and then optionally, based on the opts passed, creates tarfile.

        pylorax.ltmpl module¶

        -class pylorax.ltmpl.LiveTemplateRunner(dbo, fatalerrors=True, templatedir=None, defaults=None)[source]¶
        +class pylorax.ltmpl.LiveTemplateRunner(dbo, fatalerrors=True, templatedir=None, defaults=None)[source]¶

        Bases: pylorax.ltmpl.TemplateRunner

        This class parses and executes a limited Lorax template. Sample usage:

        @@ -1336,7 +1310,7 @@ pacages needed to build the live-iso output.

        -installpkg(*pkgs)[source]¶
        +installpkg(*pkgs)[source]¶
        installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...]

        Request installation of all packages matching the given globs. Note that this is just a request - nothing is actually installed @@ -1350,18 +1324,18 @@ until the 'run_pkg_transaction' command is given.

        -class pylorax.ltmpl.LoraxTemplate(directories=None)[source]¶
        +class pylorax.ltmpl.LoraxTemplate(directories=None)[source]¶

        Bases: object

        -parse(template_file, variables)[source]¶
        +parse(template_file, variables)[source]¶
        -class pylorax.ltmpl.LoraxTemplateRunner(inroot, outroot, dbo=None, fatalerrors=True, templatedir=None, defaults=None)[source]¶
        +class pylorax.ltmpl.LoraxTemplateRunner(inroot, outroot, dbo=None, fatalerrors=True, templatedir=None, defaults=None)[source]¶

        Bases: pylorax.ltmpl.TemplateRunner

        This class parses and executes Lorax templates. Sample usage:

        @@ -1390,7 +1364,7 @@ on that line (after word splitting and brace expansion)

        -append(filename, data)[source]¶
        +append(filename, data)[source]¶
        append FILE STRING

        Append STRING (followed by a newline character) to FILE. Python character escape sequences ('n', 't', etc.) will be @@ -1406,7 +1380,7 @@ append /etc/resolv.conf ""

        -chmod(fileglob, mode)[source]¶
        +chmod(fileglob, mode)[source]¶
        chmod FILEGLOB OCTALMODE

        Change the mode of all the files matching FILEGLOB to OCTALMODE.

        @@ -1415,7 +1389,7 @@ append /etc/resolv.conf ""

        -copy(src, dest)[source]¶
        +copy(src, dest)[source]¶
        copy SRC DEST

        Copy SRC to DEST. If DEST is a directory, SRC will be copied inside it. @@ -1427,7 +1401,7 @@ that name, if the path leading to it exists.

        -createaddrsize(addr, src, dest)[source]¶
        +createaddrsize(addr, src, dest)[source]¶
        createaddrsize INITRD_ADDRESS INITRD ADDRSIZE

        Create the initrd.addrsize file required in LPAR boot process.

        @@ -1440,7 +1414,7 @@ that name, if the path leading to it exists.

        +hardlink(src, dest)[source]¶
        hardlink SRC DEST

        Create a hardlink at DEST which is linked to SRC.

        @@ -1449,7 +1423,7 @@ that name, if the path leading to it exists.

        -install(srcglob, dest)[source]¶
        +install(srcglob, dest)[source]¶
        install SRC DEST

        Copy the given file (or files, if a glob is used) from the input tree to the given destination in the output tree. @@ -1469,7 +1443,7 @@ install /usr/share/myconfig/grub.conf.in /boot/grub.conf

        -installimg(*args)[source]¶
        +installimg(*args)[source]¶
        installimg [--xz|--gzip|--bzip2|--lzma] [-ARG|--ARG=OPTION] SRCDIR DESTFILE

        Create a compressed cpio archive of the contents of SRCDIR and place it in DESTFILE.

        @@ -1489,7 +1463,7 @@ passed to it. The default is xz -9

        -installinitrd(section, src, dest)[source]¶
        +installinitrd(section, src, dest)[source]¶
        installinitrd SECTION SRC DEST

        Same as installkernel, but for "initrd".

        @@ -1498,7 +1472,7 @@ passed to it. The default is xz -9

        -installkernel(section, src, dest)[source]¶
        +installkernel(section, src, dest)[source]¶
        installkernel SECTION SRC DEST

        Install the kernel from SRC in the input tree to DEST in the output tree, and then add an item to the treeinfo data store, in the named @@ -1514,7 +1488,7 @@ treeinfo SECTION kernel DEST

        -installpkg(*pkgs)[source]¶
        +installpkg(*pkgs)[source]¶
        installpkg [--required|--optional] [--except PKGGLOB [--except PKGGLOB ...]] PKGGLOB [PKGGLOB ...]

        Request installation of all packages matching the given globs. Note that this is just a request - nothing is actually installed @@ -1526,7 +1500,7 @@ until the 'run_pkg_transaction' command is given.

        -installupgradeinitrd(section, src, dest)[source]¶
        +installupgradeinitrd(section, src, dest)[source]¶
        installupgradeinitrd SECTION SRC DEST

        Same as installkernel, but for "upgrade".

        @@ -1535,7 +1509,7 @@ until the 'run_pkg_transaction' command is given.

        -log(msg)[source]¶
        +log(msg)[source]¶
        log MESSAGE

        Emit the given log message. Be sure to put it in quotes!

        @@ -1548,7 +1522,7 @@ until the 'run_pkg_transaction' command is given.

        -mkdir(*dirs)[source]¶
        +mkdir(*dirs)[source]¶
        mkdir DIR [DIR ...]

        Create the named DIR(s). Will create leading directories as needed.

        @@ -1561,7 +1535,7 @@ until the 'run_pkg_transaction' command is given.

        -move(src, dest)[source]¶
        +move(src, dest)[source]¶
        move SRC DEST

        Move SRC to DEST.

        @@ -1570,7 +1544,7 @@ until the 'run_pkg_transaction' command is given.

        -remove(*fileglobs)[source]¶
        +remove(*fileglobs)[source]¶
        remove FILEGLOB [FILEGLOB ...]

        Remove all the named files or directories. Will not raise exceptions if the file(s) are not found.

        @@ -1580,7 +1554,7 @@ Will not raise exceptions if the file(s) are not found.

        -removefrom(pkg, *globs)[source]¶
        +removefrom(pkg, *globs)[source]¶
        removefrom PKGGLOB [--allbut] FILEGLOB [FILEGLOB...]

        Remove all files matching the given file globs from the package (or packages) named. @@ -1597,7 +1571,7 @@ removefrom xfsprogs --allbut /sbin/*

        -removekmod(*globs)[source]¶
        +removekmod(*globs)[source]¶
        removekmod GLOB [GLOB...] [--allbut] KEEPGLOB [KEEPGLOB...]

        Remove all files and directories matching the given file globs from the kernel modules directory.

        @@ -1617,7 +1591,7 @@ removekmod drivers/char --allbut virtio_console hw_random

        -removepkg(*pkgs)[source]¶
        +removepkg(*pkgs)[source]¶
        removepkg PKGGLOB [PKGGLOB...]

        Delete the named package(s).

        @@ -1631,7 +1605,7 @@ Files are deleted, but directories are left behind.

        -replace(pat, repl, *fileglobs)[source]¶
        +replace(pat, repl, *fileglobs)[source]¶
        replace PATTERN REPLACEMENT FILEGLOB [FILEGLOB ...]

        Find-and-replace the given PATTERN (Python-style regex) with the given REPLACEMENT string for each of the files listed.

        @@ -1645,14 +1619,14 @@ REPLACEMENT string for each of the files listed.

        -run_pkg_transaction()[source]¶
        +run_pkg_transaction()[source]¶

        Actually install all the packages requested by previous 'installpkg' commands.

        -runcmd(*cmdlist)[source]¶
        +runcmd(*cmdlist)[source]¶
        runcmd CMD [ARG ...]

        Run the given command with the given arguments.

        NOTE: All paths given MUST be COMPLETE, ABSOLUTE PATHS to the file @@ -1675,7 +1649,7 @@ remove ${f}

        +symlink(target, dest)[source]¶
        symlink SRC DEST

        Create a symlink at DEST which points to SRC.

        @@ -1684,7 +1658,7 @@ remove ${f}
        -systemctl(cmd, *units)[source]¶
        +systemctl(cmd, *units)[source]¶
        systemctl [enable|disable|mask] UNIT [UNIT...]

        Enable, disable, or mask the given systemd units.

        @@ -1698,7 +1672,7 @@ systemctl mask fedora-storage-init.service fedora-configure.service

        -treeinfo(section, key, *valuetoks)[source]¶
        +treeinfo(section, key, *valuetoks)[source]¶
        treeinfo SECTION KEY ARG [ARG ...]

        Add an item to the treeinfo data store. The given SECTION will have a new item added where @@ -1715,7 +1689,7 @@ KEY = ARG ARG ...

        -class pylorax.ltmpl.TemplateRunner(fatalerrors=True, templatedir=None, defaults=None, builtins=None)[source]¶
        +class pylorax.ltmpl.TemplateRunner(fatalerrors=True, templatedir=None, defaults=None, builtins=None)[source]¶

        Bases: object

        This class parses and executes Lorax templates. Sample usage:

        @@ -1742,29 +1716,29 @@ of a command in an %if statement (or any other control statements)!

        -run(templatefile, **variables)[source]¶
        +run(templatefile, **variables)[source]¶
        -pylorax.ltmpl.brace_expand(s)[source]¶
        +pylorax.ltmpl.brace_expand(s)[source]¶
        -pylorax.ltmpl.rexists(pathname, root='')[source]¶
        +pylorax.ltmpl.rexists(pathname, root='')[source]¶
        -pylorax.ltmpl.rglob(pathname, root='/', fatal=False)[source]¶
        +pylorax.ltmpl.rglob(pathname, root='/', fatal=False)[source]¶
        -pylorax.ltmpl.split_and_expand(line)[source]¶
        +pylorax.ltmpl.split_and_expand(line)[source]¶
        @@ -1772,14 +1746,14 @@ of a command in an %if statement (or any other control statements)!

        pylorax.monitor module¶

        -class pylorax.monitor.LogMonitor(log_path=None, host='localhost', port=0, timeout=None, log_request_handler_class=<class 'pylorax.monitor.LogRequestHandler'>)[source]¶
        +class pylorax.monitor.LogMonitor(log_path=None, host='localhost', port=0, timeout=None, log_request_handler_class=<class 'pylorax.monitor.LogRequestHandler'>)[source]¶

        Bases: object

        Setup a server to monitor the logs output by the installation

        This needs to be running before the virt-install runs, it expects there to be a listener on the port used for the virtio log port.

        -shutdown()[source]¶
        +shutdown()[source]¶

        Force shutdown of the monitoring thread

        @@ -1787,7 +1761,7 @@ there to be a listener on the port used for the virtio log port.

        -class pylorax.monitor.LogRequestHandler(request, client_address, server)[source]¶
        +class pylorax.monitor.LogRequestHandler(request, client_address, server)[source]¶

        Bases: socketserver.BaseRequestHandler

        Handle monitoring and saving the logfiles from the virtual install

        Incoming data is written to self.server.log_path and each line is checked @@ -1795,12 +1769,12 @@ for patterns that would indicate that the installation failed. self.server.log_error is set True when this happens.

        -finish()[source]¶
        +finish()[source]¶
        -handle()[source]¶
        +handle()[source]¶

        Write incoming data to a logfile and check for errors

        Split incoming data into lines and check for any Tracebacks or other errors that indicate that the install failed.

        @@ -1809,7 +1783,7 @@ errors that indicate that the install failed.

        -iserror(line)[source]¶
        +iserror(line)[source]¶

        Check a line to see if it contains an error indicating installation failure

        Parameters
        @@ -1821,30 +1795,30 @@ errors that indicate that the install failed.

        -re_tests = ['packaging: base repo .* not valid', 'packaging: .* requires .*']¶
        +re_tests = ['packaging: base repo .* not valid', 'packaging: .* requires .*']¶
        -setup()[source]¶
        +setup()[source]¶

        Start writing to self.server.log_path

        -simple_tests = ['Traceback (', 'traceback script(s) have been run', 'Out of memory:', 'Call Trace:', 'insufficient disk space:', 'Not enough disk space to download the packages', 'error populating transaction after', 'crashed on signal', 'packaging: Missed: NoSuchPackage', 'packaging: Installation failed', 'The following error occurred while installing. This is a fatal error']¶
        +simple_tests = ['Traceback (', 'traceback script(s) have been run', 'Out of memory:', 'Call Trace:', 'insufficient disk space:', 'Not enough disk space to download the packages', 'error populating transaction after', 'crashed on signal', 'packaging: Missed: NoSuchPackage', 'packaging: Installation failed', 'The following error occurred while installing. This is a fatal error']¶
        -class pylorax.monitor.LogServer(log_path, *args, **kwargs)[source]¶
        +class pylorax.monitor.LogServer(log_path, *args, **kwargs)[source]¶

        Bases: socketserver.TCPServer

        A TCP Server that listens for log data

        -log_check()[source]¶
        +log_check()[source]¶

        Check to see if an error has been found in the log

        Returns
        @@ -1858,7 +1832,7 @@ errors that indicate that the install failed.

        -timeout = 60¶
        +timeout = 60¶
        @@ -1868,7 +1842,7 @@ errors that indicate that the install failed.

        pylorax.mount module¶

        -class pylorax.mount.IsoMountpoint(iso_path, initrd_path=None)[source]¶
        +class pylorax.mount.IsoMountpoint(iso_path, initrd_path=None)[source]¶

        Bases: object

        Mount the iso and check to make sure the vmlinuz and initrd.img files exist

        Also check the iso for a a stage2 image and set a flag and extract the @@ -1876,14 +1850,14 @@ iso's label.

        stage2 can be either LiveOS/squashfs.img or images/install.img

        -get_iso_label()[source]¶
        +get_iso_label()[source]¶

        Get the iso's label using isoinfo

        Sets self.label if one is found

        -umount()[source]¶
        +umount()[source]¶

        Unmount the iso

        @@ -1897,37 +1871,37 @@ iso's label.

        pylorax.sysutils module¶

        -pylorax.sysutils.joinpaths(*args, **kwargs)[source]¶
        +pylorax.sysutils.joinpaths(*args, **kwargs)[source]¶
        -pylorax.sysutils.touch(fname)[source]¶
        +pylorax.sysutils.touch(fname)[source]¶
        -pylorax.sysutils.replace(fname, find, sub)[source]¶
        +pylorax.sysutils.replace(fname, find, sub)[source]¶
        -pylorax.sysutils.chown_(path, user=None, group=None, recursive=False)[source]¶
        +pylorax.sysutils.chown_(path, user=None, group=None, recursive=False)[source]¶
        -pylorax.sysutils.chmod_(path, mode, recursive=False)[source]¶
        +pylorax.sysutils.chmod_(path, mode, recursive=False)[source]¶
        -pylorax.sysutils.remove(target)[source]¶
        +pylorax.sysutils.remove(target)[source]¶
        -pylorax.sysutils.linktree(src, dst)[source]¶
        +pylorax.sysutils.linktree(src, dst)[source]¶
        @@ -1935,66 +1909,66 @@ iso's label.

        pylorax.treebuilder module¶

        -class pylorax.treebuilder.RuntimeBuilder(product, arch, dbo, templatedir=None, installpkgs=None, excludepkgs=None, add_templates=None, add_template_vars=None)[source]¶
        +class pylorax.treebuilder.RuntimeBuilder(product, arch, dbo, templatedir=None, installpkgs=None, excludepkgs=None, add_templates=None, add_template_vars=None)[source]¶

        Bases: object

        Builds the anaconda runtime image.

        -cleanup()[source]¶
        +cleanup()[source]¶

        Remove unneeded packages and files with runtime-cleanup.tmpl

        -create_ext4_runtime(outfile='/var/tmp/squashfs.img', compression='xz', compressargs=None, size=2)[source]¶
        +create_ext4_runtime(outfile='/var/tmp/squashfs.img', compression='xz', compressargs=None, size=2)[source]¶

        Create a squashfs compressed ext4 runtime

        -create_squashfs_runtime(outfile='/var/tmp/squashfs.img', compression='xz', compressargs=None, size=2)[source]¶
        +create_squashfs_runtime(outfile='/var/tmp/squashfs.img', compression='xz', compressargs=None, size=2)[source]¶

        Create a plain squashfs runtime

        -finished()[source]¶
        +finished()[source]¶

        Done using RuntimeBuilder

        Close the dnf base object

        -generate_module_data()[source]¶
        +generate_module_data()[source]¶
        -install()[source]¶
        +install()[source]¶

        Install packages and do initial setup with runtime-install.tmpl

        -postinstall()[source]¶
        +postinstall()[source]¶

        Do some post-install setup work with runtime-postinstall.tmpl

        -verify()[source]¶
        +verify()[source]¶

        Ensure that contents of the installroot can run

        -writepkglists(pkglistdir)[source]¶
        +writepkglists(pkglistdir)[source]¶

        debugging data: write out lists of package contents

        -writepkgsizes(pkgsizefile)[source]¶
        +writepkgsizes(pkgsizefile)[source]¶

        debugging data: write a big list of pkg sizes

        @@ -2002,18 +1976,18 @@ iso's label.

        -class pylorax.treebuilder.TreeBuilder(product, arch, inroot, outroot, runtime, isolabel, domacboot=True, doupgrade=True, templatedir=None, add_templates=None, add_template_vars=None, workdir=None, extra_boot_args='')[source]¶
        +class pylorax.treebuilder.TreeBuilder(product, arch, inroot, outroot, runtime, isolabel, domacboot=True, doupgrade=True, templatedir=None, add_templates=None, add_template_vars=None, workdir=None, extra_boot_args='')[source]¶

        Bases: object

        Builds the arch-specific boot images. inroot should be the installtree root (the newly-built runtime dir)

        -build()[source]¶
        +build()[source]¶
        -copy_dracut_hooks(hooks)[source]¶
        +copy_dracut_hooks(hooks)[source]¶

        Copy the hook scripts in hooks into the installroot's /tmp/ and return a list of commands to pass to dracut when creating the initramfs

        @@ -2022,9 +1996,9 @@ target dracut hook directory (eg. [("99anaconda-copy-ks.sh", "/lib/dracut/hooks/pre-pivot")])

        -
        +
        -dracut_hooks_path¶
        +property dracut_hooks_path¶

        Return the path to the lorax dracut hooks scripts

        Use the configured share dir if it is setup, otherwise default to /usr/share/lorax/dracut_hooks

        @@ -2032,17 +2006,17 @@ otherwise default to /usr/share/lorax/dracut_hooks

        -implantisomd5()[source]¶
        +implantisomd5()[source]¶
        -
        +
        -kernels¶
        +property kernels¶
        -rebuild_initrds(add_args=None, backup='', prefix='')[source]¶
        +rebuild_initrds(add_args=None, backup='', prefix='')[source]¶

        Rebuild all the initrds in the tree. If backup is specified, each initrd will be renamed with backup as a suffix before rebuilding. If backup is empty, the existing initrd files will be overwritten. @@ -2056,17 +2030,17 @@ name of the kernel.

        -pylorax.treebuilder.findkernels(root='/', kdir='boot')[source]¶
        +pylorax.treebuilder.findkernels(root='/', kdir='boot')[source]¶
        -pylorax.treebuilder.generate_module_info(moddir, outfile=None)[source]¶
        +pylorax.treebuilder.generate_module_info(moddir, outfile=None)[source]¶
        -pylorax.treebuilder.string_lower(string)[source]¶
        +pylorax.treebuilder.string_lower(string)[source]¶

        Return a lowercase string.

        Parameters
        @@ -2078,7 +2052,7 @@ name of the kernel.

        -pylorax.treebuilder.udev_escape(label)[source]¶
        +pylorax.treebuilder.udev_escape(label)[source]¶
        @@ -2086,16 +2060,16 @@ name of the kernel.

        pylorax.treeinfo module¶

        -class pylorax.treeinfo.TreeInfo(product, version, variant, basearch, packagedir='')[source]¶
        +class pylorax.treeinfo.TreeInfo(product, version, variant, basearch, packagedir='')[source]¶

        Bases: object

        -add_section(section, data)[source]¶
        +add_section(section, data)[source]¶
        -write(outfile)[source]¶
        +write(outfile)[source]¶
        @@ -2105,47 +2079,47 @@ name of the kernel.

        Module contents¶

        -class pylorax.ArchData(buildarch)[source]¶
        +class pylorax.ArchData(buildarch)[source]¶

        Bases: pylorax.base.DataHolder

        -bcj_arch = {'arm': 'arm', 'armhfp': 'arm', 'i386': 'x86', 'ppc64le': 'powerpc', 'x86_64': 'x86'}¶
        +bcj_arch = {'arm': 'arm', 'armhfp': 'arm', 'i386': 'x86', 'ppc64le': 'powerpc', 'x86_64': 'x86'}¶
        -lib64_arches = ('x86_64', 'ppc64le', 's390x', 'ia64', 'aarch64')¶
        +lib64_arches = ('x86_64', 'ppc64le', 's390x', 'ia64', 'aarch64')¶
        -class pylorax.Lorax[source]¶
        +class pylorax.Lorax[source]¶

        Bases: pylorax.base.BaseLoraxClass

        -configure(conf_file='/etc/lorax/lorax.conf')[source]¶
        +configure(conf_file='/etc/lorax/lorax.conf')[source]¶
        -init_file_logging(logdir, logname='pylorax.log')[source]¶
        +init_file_logging(logdir, logname='pylorax.log')[source]¶
        -init_stream_logging()[source]¶
        +init_stream_logging()[source]¶
        -run(dbo, product, version, release, variant='', bugurl='', isfinal=False, workdir=None, outputdir=None, buildarch=None, volid=None, domacboot=True, doupgrade=True, remove_temp=False, installpkgs=None, excludepkgs=None, size=2, add_templates=None, add_template_vars=None, add_arch_templates=None, add_arch_template_vars=None, verify=True, user_dracut_args=None, squashfs_only=False)[source]¶
        +run(dbo, product, version, release, variant='', bugurl='', isfinal=False, workdir=None, outputdir=None, buildarch=None, volid=None, domacboot=True, doupgrade=True, remove_temp=False, installpkgs=None, excludepkgs=None, size=2, add_templates=None, add_template_vars=None, add_arch_templates=None, add_arch_template_vars=None, verify=True, user_dracut_args=None, squashfs_only=False)[source]¶
        -
        +
        -templatedir¶
        +property templatedir¶

        Find the template directory.

        Pick the first directory under sharedir/templates.d/ if it exists. Otherwise use the sharedir

        @@ -2155,7 +2129,7 @@ Otherwise use the sharedir

        -pylorax.find_templates(templatedir='/usr/share/lorax')[source]¶
        +pylorax.find_templates(templatedir='/usr/share/lorax')[source]¶

        Find the templates to use.

        Parameters
        @@ -2175,18 +2149,18 @@ lowest numbered directory entry is returned.

        -pylorax.get_buildarch(dbo)[source]¶
        +pylorax.get_buildarch(dbo)[source]¶
        -pylorax.log_selinux_state()[source]¶
        +pylorax.log_selinux_state()[source]¶

        Log the current state of selinux

        -pylorax.setup_logging(logfile, theLogger)[source]¶
        +pylorax.setup_logging(logfile, theLogger)[source]¶

        Setup the various logs

        Parameters
        diff --git a/search.html b/search.html index 01f966a8..7d5304d3 100644 --- a/search.html +++ b/search.html @@ -8,7 +8,7 @@ - Search — Lorax 31.7 documentation + Search — Lorax 31.9 documentation @@ -59,7 +59,7 @@
        - 31.7 + 31.9
        diff --git a/searchindex.js b/searchindex.js index fb4d74b9..cd0777f7 100644 --- a/searchindex.js +++ b/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,""],dict_names:[2,1,1,""],prettyCommitDetails:[2,1,1,""],pretty_dict:[2,1,1,""],pretty_diff_entry:[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,"-"],dnfbase:[11,0,0,"-"],errors:[11,0,0,"-"],flask_blueprint:[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,"-"],toml:[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.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.flask_blueprint":{BlueprintSetupStateSkip:[11,2,1,""],BlueprintSkip:[11,2,1,""]},"pylorax.api.flask_blueprint.BlueprintSetupStateSkip":{add_url_rule:[11,3,1,""]},"pylorax.api.flask_blueprint.BlueprintSkip":{make_setup_state:[11,3,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,""],customizations_diff:[11,1,1,""],delete_file:[11,1,1,""],delete_recipe:[11,1,1,""],diff_lists:[11,1,1,""],find_commit_tag:[11,1,1,""],find_field_value:[11,1,1,""],find_name:[11,1,1,""],find_recipe_obj:[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.toml":{TomlError:[11,5,1,""],dumps:[11,1,1,""],loads:[11,1,1,""]},"pylorax.api.v0":{blueprint_exists:[11,1,1,""],take_limits:[11,1,1,""],v0_blueprints_changes:[11,1,1,""],v0_blueprints_delete:[11,1,1,""],v0_blueprints_delete_workspace:[11,1,1,""],v0_blueprints_depsolve:[11,1,1,""],v0_blueprints_diff:[11,1,1,""],v0_blueprints_freeze:[11,1,1,""],v0_blueprints_info:[11,1,1,""],v0_blueprints_list:[11,1,1,""],v0_blueprints_new:[11,1,1,""],v0_blueprints_tag:[11,1,1,""],v0_blueprints_undo:[11,1,1,""],v0_blueprints_workspace:[11,1,1,""],v0_compose_cancel:[11,1,1,""],v0_compose_delete:[11,1,1,""],v0_compose_failed:[11,1,1,""],v0_compose_finished:[11,1,1,""],v0_compose_image:[11,1,1,""],v0_compose_info:[11,1,1,""],v0_compose_log_tail:[11,1,1,""],v0_compose_logs:[11,1,1,""],v0_compose_metadata:[11,1,1,""],v0_compose_queue:[11,1,1,""],v0_compose_results:[11,1,1,""],v0_compose_start:[11,1,1,""],v0_compose_status:[11,1,1,""],v0_compose_types:[11,1,1,""],v0_modules_info:[11,1,1,""],v0_modules_list:[11,1,1,""],v0_projects_depsolve:[11,1,1,""],v0_projects_info:[11,1,1,""],v0_projects_list:[11,1,1,""],v0_projects_source_delete:[11,1,1,""],v0_projects_source_info:[11,1,1,""],v0_projects_source_list:[11,1,1,""],v0_projects_source_new:[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,11],"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,11],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,11],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],add_url_rul:11,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,11],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:[],attempt:[4,10,11],attr:11,attribut:[5,11],audit:11,augmentenv:10,authent:11,author:[1,5,6,7,11],authorized_kei:7,automat:[7,10,11],automatic_opt:[],avahi:11,avail:[1,2,5,7,11],awar:7,b36e:11,back:[1,10,11],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],behavior:11,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,11],blueprint_exist:11,blueprint_nam:[2,11],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,blueprintsetupst:11,blueprintsetupstateskip:11,blueprintskip:11,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,11],calledprocesserror:10,caller:11,can:[1,2,5,6,7,9,10,11],cancel:[1,2,5,10,11],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,11],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,11],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,comparison: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,11],compose_typ:[2,7,11],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:[],current:[1,4,5,7,10,11],custom:[4,5,9,11],customizations_diff: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,11],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,11],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,11],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_nam:2,dict_typ:11,dictionari:11,didn:5,died:5,diff:[1,2,11],diff_item:[],diff_list: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,11],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,endpoint:11,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,11],failur:[10,11],fairli:6,fakednf:10,fall:11,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:[2,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,11],filter_stderr:10,find:[0,4,5,10,11],find_commit_tag:11,find_field_valu:11,find_free_port:10,find_nam:11,find_ostree_root:10,find_recipe_obj:11,find_templ:10,findkernel:10,fine:7,finish:[1,2,6,7,10,11],firewal:11,firewall_cmd:11,firewalld:7,firmwar:5,first:[4,5,7,10,11],first_registr:11,fit:5,five:2,fix:10,flag:10,flask:11,flask_blueprint:[8,10],flatten:5,flexibl:4,fmt:10,fname:10,fobj:10,follow:[2,5,10,11],foo:11,forc:[6,7,10,11],form:[0,6,11],format:[1,2,5,7,10,11],found:[5,7,10,11],four:2,free:[6,10],freez:[1,2,11],from:[0,1,2,4,5,6,7,9,10,11],from_commit:11,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,green:11,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],helper:11,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,11],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,11],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,11],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,11],just:[9,10,11],kbyte:11,kdir:10,keep:[1,5,10,11],keepglob:10,kei:[2,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,11],latest:[5,11],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,11],line:[2,4,7,10,11],link:10,linktre:10,linux:[5,6,10],list:[1,2,4,5,6,7,10,11],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,11],local:[1,5,10,11],localectl:7,localhost:10,locat:[5,6],lock:[7,11],lock_check:11,log:[1,2,5,6,10,11],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:[2,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,11],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_setup_st:11,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:[],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,11],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:11,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,11],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,11],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,norm:2,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,11],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],pos:11,posit:11,possibl:[2,5,7,10,11],post:[0,5,7,10,11],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],pretty_dict:2,pretty_diff_entri:2,prettycommitdetail:2,prettydiffentri:[],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:11,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],regist:11,register_blueprint:11,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,11],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,2,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,rule: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:[2,5],singleton:10,site:5,situat:7,size:[1,2,5,6,10,11],skip:[5,10,11],skip_rul: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,11],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],str1:2,str2:2,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,11],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:11,token:10,told:6,toml:[0,1,2,7,8,10],toml_dict:11,toml_filenam:2,tomldecodeerror:11,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,11],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],url_prefix: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,2,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,11],utc:[7,11],utf:[7,10],util:[0,5,8],uuid:[1,2,7,11],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,v0_blueprints_chang:11,v0_blueprints_delet:11,v0_blueprints_delete_workspac:11,v0_blueprints_depsolv:11,v0_blueprints_diff:11,v0_blueprints_freez:11,v0_blueprints_info:11,v0_blueprints_list:11,v0_blueprints_new:11,v0_blueprints_tag:11,v0_blueprints_undo:11,v0_blueprints_workspac:11,v0_compose_cancel:11,v0_compose_delet:11,v0_compose_fail:11,v0_compose_finish:11,v0_compose_imag:11,v0_compose_info:11,v0_compose_log:11,v0_compose_log_tail:11,v0_compose_metadata:11,v0_compose_queu:11,v0_compose_result:11,v0_compose_start:11,v0_compose_statu:11,v0_compose_typ:11,v0_modules_info:11,v0_modules_list:11,v0_projects_depsolv:11,v0_projects_info:11,v0_projects_list:11,v0_projects_source_delet:11,v0_projects_source_info:11,v0_projects_source_list:11,v0_projects_source_new: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,11],view_func:11,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],wrapper:11,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],blueprint_nam:[],boot:5,branch:3,build:1,buildstamp:10,cancel:[],chang:[],checkparam:11,cleanup:6,cli:[1,2],cmdline:[1,2,5,6,7,10,11],commit:[],compos:[0,1,2,7,11],compose_statu:[],compose_typ:[],config:11,contain:5,content:[0,2,10,11],creat:5,creation:[5,6],creator:[5,10],crossdomain:[],custom:[6,7],debug:5,decor:10,delet:[],depsolv:[],diff:[],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:[],file:5,filesystem:[5,6],finish:[],firewal:7,flask_blueprint:11,format:[],freez:[],from_commit:[],git:7,gitrpm:11,group:7,hack:5,help:2,how:[5,6,7],http_client:0,imag:[1,5,7,9],imgutil:10,indic:3,info:[],initi:5,insid:6,instal:[5,6,7,10],introduct:4,iso:[5,6,7],json:[],kbyte:[],kernel:7,kickstart:5,limit:[],list:[],live:5,livemedia:5,local:7,log:7,lorax:[3,4,6,7],ltmpl:10,metadata:[],mock:[5,6],modul:[0,2,7,10,11],module_nam:[],monitor:[1,10],mount:10,name:[1,5,6,7],note:7,oci:5,offset:[],open:5,openstack:5,other:3,output:[7,10,11],packag:[0,2,7,10,11],partit:7,posit:[1,6,7],post:[],postinstal:6,problem:5,product:9,project:[2,11],project_nam:[],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:[],rout:11,run:6,runtim:6,secur:7,server:11,servic:7,size:[],sourc:[2,7],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:[],tar:5,templat:6,thing:7,timestamp:11,timezon:7,tmpl:6,to_commit:[],toml:11,treebuild:10,treeinfo:10,type:[7,11],uefi:5,undo:[],unix_socket:0,updat:9,user:[5,7],util:2,uuid:[],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.citation":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,""],dict_names:[2,1,1,""],prettyCommitDetails:[2,1,1,""],pretty_dict:[2,1,1,""],pretty_diff_entry:[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,3,1,""]},"pylorax.api":{bisect:[11,0,0,"-"],checkparams:[11,0,0,"-"],cmdline:[11,0,0,"-"],compose:[11,0,0,"-"],config:[11,0,0,"-"],dnfbase:[11,0,0,"-"],errors:[11,0,0,"-"],flask_blueprint:[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,"-"],toml:[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.dnfbase":{DNFLock:[11,2,1,""],get_base_object:[11,1,1,""]},"pylorax.api.dnfbase.DNFLock":{lock:[11,3,1,""],lock_check:[11,3,1,""]},"pylorax.api.flask_blueprint":{BlueprintSetupStateSkip:[11,2,1,""],BlueprintSkip:[11,2,1,""]},"pylorax.api.flask_blueprint.BlueprintSetupStateSkip":{add_url_rule:[11,3,1,""]},"pylorax.api.flask_blueprint.BlueprintSkip":{make_setup_state:[11,3,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,""],check_list_case:[11,1,1,""],check_recipe_dict:[11,1,1,""],check_required_list:[11,1,1,""],commit_recipe:[11,1,1,""],commit_recipe_directory:[11,1,1,""],commit_recipe_file:[11,1,1,""],customizations_diff:[11,1,1,""],delete_file:[11,1,1,""],delete_recipe:[11,1,1,""],diff_lists:[11,1,1,""],find_commit_tag:[11,1,1,""],find_field_value:[11,1,1,""],find_name:[11,1,1,""],find_recipe_obj:[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,3,1,""],freeze:[11,3,1,""],group_names:[11,3,1,""],module_names:[11,3,1,""],module_nver:[11,3,1,""],package_names:[11,3,1,""],package_nver:[11,3,1,""],toml:[11,3,1,""]},"pylorax.api.server":{GitLock:[11,2,1,""]},"pylorax.api.server.GitLock":{dir:[11,3,1,""],lock:[11,3,1,""],repo:[11,3,1,""]},"pylorax.api.timestamp":{timestamp_dict:[11,1,1,""],write_timestamp:[11,1,1,""]},"pylorax.api.toml":{TomlError:[11,5,1,""],dumps:[11,1,1,""],loads:[11,1,1,""]},"pylorax.api.v0":{blueprint_exists:[11,1,1,""],take_limits:[11,1,1,""],v0_blueprints_changes:[11,1,1,""],v0_blueprints_delete:[11,1,1,""],v0_blueprints_delete_workspace:[11,1,1,""],v0_blueprints_depsolve:[11,1,1,""],v0_blueprints_diff:[11,1,1,""],v0_blueprints_freeze:[11,1,1,""],v0_blueprints_info:[11,1,1,""],v0_blueprints_list:[11,1,1,""],v0_blueprints_new:[11,1,1,""],v0_blueprints_tag:[11,1,1,""],v0_blueprints_undo:[11,1,1,""],v0_blueprints_workspace:[11,1,1,""],v0_compose_cancel:[11,1,1,""],v0_compose_delete:[11,1,1,""],v0_compose_failed:[11,1,1,""],v0_compose_finished:[11,1,1,""],v0_compose_image:[11,1,1,""],v0_compose_info:[11,1,1,""],v0_compose_log_tail:[11,1,1,""],v0_compose_logs:[11,1,1,""],v0_compose_metadata:[11,1,1,""],v0_compose_queue:[11,1,1,""],v0_compose_results:[11,1,1,""],v0_compose_start:[11,1,1,""],v0_compose_status:[11,1,1,""],v0_compose_types:[11,1,1,""],v0_modules_info:[11,1,1,""],v0_modules_list:[11,1,1,""],v0_projects_depsolve:[11,1,1,""],v0_projects_info:[11,1,1,""],v0_projects_list:[11,1,1,""],v0_projects_source_delete:[11,1,1,""],v0_projects_source_info:[11,1,1,""],v0_projects_source_list:[11,1,1,""],v0_projects_source_new:[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,""],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,3,1,""],implantisomd5:[10,3,1,""],kernels:[10,3,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,"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,11],"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,11],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,11],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],add_url_rul:11,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,11],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,attempt:[4,10,11],attr:11,attribut:[5,11],audit:11,augmentenv:10,authent:11,author:[1,5,6,7,11],authorized_kei:7,automat:[7,10,11],avahi:11,avail:[1,2,5,7,11],awar:7,b36e:11,back:[1,10,11],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,11],behavior:11,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,11],blueprint_exist:11,blueprint_nam:[2,11],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,blueprintsetupst:11,blueprintsetupstateskip:11,blueprintskip:11,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,boundari: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,11],calledprocesserror:10,caller:11,can:[1,2,5,6,7,9,10,11],cancel:[1,2,5,10,11],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,11],changelog:[1,11],charact:[7,10],check:[7,10,11],check_gpg:[7,11],check_kickstart:10,check_list_cas:11,check_queu:11,check_recipe_dict:11,check_required_list: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,11],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,11],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,comparison: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,11],compose_typ:[2,7,11],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,current:[1,4,5,7,10,11],custom:[4,5,9,11],customizations_diff: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,11],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,11],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,11],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_nam:2,dict_typ:11,dictionari:11,didn:5,died:5,diff:[1,2,11],diff_list: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,11],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,endpoint:11,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,11],expected_kei:11,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,11],failur:[10,11],fairli:6,fakednf:10,fall:11,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:[2,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,11],filter_stderr:10,find:[0,4,5,10,11],find_commit_tag:11,find_field_valu:11,find_free_port:10,find_nam:11,find_ostree_root:10,find_recipe_obj:11,find_templ:10,findkernel:10,fine:7,finish:[1,2,6,7,10,11],firewal:11,firewall_cmd:11,firewalld:7,firmwar:5,first:[4,5,7,10,11],first_registr:11,fit:5,five:2,fix:10,flag:10,flask:11,flask_blueprint:[8,10],flatten:5,flexibl:4,fmt:10,fname:10,fobj:10,follow:[2,5,10,11],foo:11,forc:[6,7,10,11],form:[0,6,11],format:[1,2,5,7,10,11],found:[5,7,10,11],four:2,free:[6,10],freez:[1,2,11],from:[0,1,2,4,5,6,7,9,10,11],from_commit:11,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,green:11,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],helper:11,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,11],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,11],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,11],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,11],just:[9,10,11],kbyte:11,kdir:10,keep:[1,5,10,11],keepglob:10,kei:[2,7,10,11],kernel:[5,6,10,11],kernel_append:11,kernel_arg:[5,10],keyboard:[7,11],keyboard_cmd:11,keymap:7,kib:11,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,11],latest:[5,11],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,11],line:[2,4,7,10,11],link:10,linktre:10,linux:[5,6,10],list:[1,2,4,5,6,7,10,11],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,11],local:[1,5,10,11],localectl:7,localhost:10,locat:[5,6],lock:[7,11],lock_check:11,log:[1,2,5,6,10,11],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],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:[2,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_setup_st:11,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],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,11],metalink:[7,11],method:[5,7,10,11],mib:[5,10,11],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:11,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,11],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,11],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,norm:2,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,11],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:[5,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],pos:11,posit:11,possibl:[2,5,7,10,11],post:[0,5,7,10,11],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,11],preserv:10,pretti:[7,10],pretty_dict:2,pretty_diff_entri:2,prettycommitdetail: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,11],proj:11,proj_to_modul:11,project:[0,1,5,7,8,10],project_info:11,project_nam:11,projects_cmd:2,projects_depsolv:11,projects_depsolve_with_s:11,projects_info:[2,11],projects_list:[2,11],projectserror:11,pronounc:11,properti:[10,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_kei: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],regist:11,register_blueprint:11,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,11],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,2,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,rule: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,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:[2,5,11],singleton:10,site:5,situat:7,size:[1,2,5,6,10,11],skip:[5,10,11],skip_rul: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,11],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],str1:2,str2:2,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,11],tag_file_commit:11,tag_recipe_commit:11,tail: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:11,token:10,told:6,toml:[0,1,2,7,8,10],toml_dict:11,toml_filenam:2,tomldecodeerror:11,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,11],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,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],url_prefix: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,2,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,11],utc:[7,11],utf:[7,10],util:[0,5,8],uuid:[1,2,7,11],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,v0_blueprints_chang:11,v0_blueprints_delet:11,v0_blueprints_delete_workspac:11,v0_blueprints_depsolv:11,v0_blueprints_diff:11,v0_blueprints_freez:11,v0_blueprints_info:11,v0_blueprints_list:11,v0_blueprints_new:11,v0_blueprints_tag:11,v0_blueprints_undo:11,v0_blueprints_workspac:11,v0_compose_cancel:11,v0_compose_delet:11,v0_compose_fail:11,v0_compose_finish:11,v0_compose_imag:11,v0_compose_info:11,v0_compose_log:11,v0_compose_log_tail:11,v0_compose_metadata:11,v0_compose_queu:11,v0_compose_result:11,v0_compose_start:11,v0_compose_statu:11,v0_compose_typ:11,v0_modules_info:11,v0_modules_list:11,v0_projects_depsolv:11,v0_projects_info:11,v0_projects_list:11,v0_projects_source_delet:11,v0_projects_source_info:11,v0_projects_source_list:11,v0_projects_source_new: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,11],view_func:11,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],wrapper:11,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],boot:5,branch:3,build:1,buildstamp:10,checkparam:11,cleanup:6,cli:[1,2],cmdline:[1,2,5,6,7,10,11],compos:[0,1,2,7,11],config:11,contain:5,content:[0,2,10,11],creat:5,creation:[5,6],creator:[5,10],custom:[6,7],debug:5,decor:10,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,file:5,filesystem:[5,6],firewal:7,flask_blueprint:11,git:7,gitrpm:11,group:7,hack:5,help:2,how:[5,6,7],http_client:0,imag:[1,5,7,9],imgutil:10,indic:3,initi:5,insid:6,instal:[5,6,7,10],introduct:4,iso:[5,6,7],kernel:7,kickstart:5,live:5,livemedia:5,local:7,log:7,lorax:[3,4,6,7],ltmpl:10,mock:[5,6],modul:[0,2,7,10,11],monitor:[1,10],mount:10,name:[1,5,6,7],note:7,oci:5,open:5,openstack:5,other:3,output:[7,10,11],packag:[0,2,7,10,11],partit:7,posit:[1,6,7],postinstal:6,problem:5,product:9,project:[2,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,rout:11,run:6,runtim:6,secur:7,server:11,servic:7,sourc:[2,7],squashf:6,src:8,sshkei:7,statu:[1,2,11],submodul:[0,2,10,11],subpackag:[0,10],support:7,sysutil:10,tabl:3,tar:5,templat:6,thing:7,timestamp:11,timezon:7,tmpl:6,toml:11,treebuild:10,treeinfo:10,type:[7,11],uefi:5,unix_socket:0,updat:9,user:[5,7],util:2,vagrant:5,virt:5,welcom:3,work:[5,6,7],workspac:11}}) \ No newline at end of file