pylorax.api package¶
Submodules¶
pylorax.api.cmdline module¶
pylorax.api.compose module¶
pylorax.api.config module¶
- 
class pylorax.api.config.ComposerConfig(*args, **kwargs)[source]¶
- Bases: - configparser.SafeConfigParser
- 
pylorax.api.config.configure(conf_file='/etc/lorax/composer.conf', root_dir='/', test_config=False)[source]¶
- lorax-composer configuration - Parameters: 
- 
pylorax.api.config.make_dnf_dirs(conf)[source]¶
- Make any missing dnf directories - Parameters: - conf (ComposerConfig) – The configuration to use - Returns: - None 
- 
pylorax.api.config.make_queue_dirs(conf, gid)[source]¶
- Make any missing queue directories - Parameters: - conf (ComposerConfig) – The configuration to use
- gid (int) – Group ID that has access to the queue directories
 - Returns: - list of errors - Return type: - list of str 
pylorax.api.crossdomain module¶
pylorax.api.dnfbase module¶
pylorax.api.projects module¶
- 
pylorax.api.projects.api_changelog(changelog)[source]¶
- Convert the changelog to a string - Parameters: - changelog (tuple) – A list of time, author, string tuples. - Returns: - The most recent changelog text or “” - Return type: - str - This returns only the most recent changelog entry. 
- 
pylorax.api.projects.api_time(t)[source]¶
- Convert time since epoch to a string - Parameters: - t (int) – Seconds since epoch - Returns: - Time string - Return type: - str 
- 
pylorax.api.projects.delete_repo_source(source_glob, source_name)[source]¶
- Delete a source from a repo file - Parameters: - source_glob (str) – A glob of the repo sources to search - Returns: - None - Raises: - ProjectsError if there was a problem - A repo file may have multiple sources in it, delete only the selected source. If it is the last one in the file, delete the file. - WARNING: This will delete ANY source, the caller needs to ensure that a system source_name isn’t passed to it. 
- 
pylorax.api.projects.dep_evra(dep)[source]¶
- Return the epoch:version-release.arch for the dep - Parameters: - dep (dict) – dependency dict - Returns: - epoch:version-release.arch - Return type: - str 
- 
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: - repo (dnf.RepoDict) – DNF Repository - Returns: - A string - Return type: - str - The DNF Repo.dump() function does not produce a string that can be used as a dnf .repo file, it ouputs baseurl and gpgkey as python lists which DNF cannot read. So do this manually with only the attributes we care about. 
- 
pylorax.api.projects.estimate_size(packages, block_size=6144)[source]¶
- Estimate the installed size of a package list - Parameters: - packages (list of hawkey.Package objects) – The packages to be installed
- block_size (int) – The block size to use for rounding up file sizes.
 - Returns: - The estimated size of installed packages - Return type: - Estimating actual requirements is difficult without the actual file sizes, which dnf doesn’t provide access to. So use the file count and block size to estimate a minimum size for each package. 
- 
pylorax.api.projects.get_repo_sources(source_glob)[source]¶
- Return a list of sources from a directory of yum repositories - Parameters: - source_glob (str) – A glob to use to match the source files, including full path - Returns: - A list of the source ids in all of the matching files - Return type: - list of str 
- 
pylorax.api.projects.get_source_ids(source_path)[source]¶
- Return a list of the source ids in a file - Parameters: - source_path (str) – Full path and filename of the source (yum repo) file - Returns: - A list of source id strings - Return type: - list of str 
- 
pylorax.api.projects.modules_info(dbo, module_names)[source]¶
- Return details about a module, including dependencies - Parameters: - dbo (dnf.Base) – dnf base object
- module_names (str) – Names of the modules to get info about
 - Returns: - List of dicts with module details and dependencies. - Return type: - list of dicts 
- 
pylorax.api.projects.modules_list(dbo, module_names)[source]¶
- Return a list of modules - Parameters: - dbo (dnf.Base) – dnf base object
- offset – Number of modules to skip
- limit (int) – Maximum number of modules to return
 - Returns: - List of module information and total count - Return type: - tuple of a list of dicts and an Int - Modules don’t exist in RHEL7 so this only returns projects and sets the type to “rpm” 
- 
pylorax.api.projects.pkg_to_build(pkg)[source]¶
- Extract the build details from a hawkey.Package object - Parameters: - pkg (hawkey.Package) – hawkey.Package object with package details - Returns: - A dict with the build details, epoch, release, arch, build_time, changelog, … - Return type: - dict - metadata entries are hard-coded to {} - Note that this only returns the build dict, it does not include the name, description, etc. 
- 
pylorax.api.projects.pkg_to_dep(pkg)[source]¶
- Extract the info from a hawkey.Package object - Parameters: - pkg (hawkey.Package) – A hawkey.Package object - Returns: - A dict with name, epoch, version, release, arch - Return type: - dict 
- 
pylorax.api.projects.pkg_to_project(pkg)[source]¶
- Extract the details from a hawkey.Package object - Parameters: - pkgs (hawkey.Package) – hawkey.Package object with package details - Returns: - A dict with the name, summary, description, and url. - Return type: - dict - upstream_vcs is hard-coded to UPSTREAM_VCS 
- 
pylorax.api.projects.pkg_to_project_info(pkg)[source]¶
- Extract the details from a hawkey.Package object - Parameters: - pkg (hawkey.Package) – hawkey.Package object with package details - Returns: - A dict with the project details, as well as epoch, release, arch, build_time, changelog, … - Return type: - dict - metadata entries are hard-coded to {} 
- 
pylorax.api.projects.proj_to_module(proj)[source]¶
- Extract the name from a project_info dict - Parameters: - pkg (dict) – dict with package details - Returns: - A dict with name, and group_type - Return type: - dict - group_type is hard-coded to “rpm” 
- 
pylorax.api.projects.projects_depsolve(dbo, projects, groups)[source]¶
- Return the dependencies for a list of projects - Parameters: - dbo (dnf.Base) – dnf base object
- projects (List of Strings) – The projects to find the dependencies for
- groups (List of str) – The groups to include in dependency solving
 - Returns: - NEVRA’s of the project and its dependencies - Return type: - list of dicts - Raises: - ProjectsError if there was a problem installing something 
- 
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: - dbo (dnf.Base) – dnf base object
- project_names (List of Strings) – The projects to find the dependencies for
- groups (List of str) – The groups to include in dependency solving
 - Returns: - installed size and a list of NEVRA’s of the project and its dependencies - Return type: - tuple of (int, list of dicts) - Raises: - ProjectsError if there was a problem installing something 
- 
pylorax.api.projects.projects_info(dbo, project_names)[source]¶
- Return details about specific projects - Parameters: - dbo (dnf.Base) – dnf base object
- project_names (str) – List of names of projects to get info about
 - Returns: - List of project info dicts with pkg_to_project as well as epoch, version, release, etc. - Return type: - list of dicts - If project_names is None it will return the full list of available packages 
- 
pylorax.api.projects.projects_list(dbo)[source]¶
- Return a list of projects - Parameters: - dbo (dnf.Base) – dnf base object - Returns: - List of project info dicts with name, summary, description, homepage, upstream_vcs - Return type: - list of dicts 
- 
pylorax.api.projects.repo_to_source(repo, system_source)[source]¶
- Return a Weldr Source dict created from the DNF Repository - Parameters: - repo (dnf.RepoDict) – DNF Repository
- system_source (bool) – True if this source is an immutable system source
 - Returns: - A dict with Weldr Source fields filled in - Return type: - Example: - { "check_gpg": true, "check_ssl": true, "gpgkey_url": [ "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-28-x86_64" ], "name": "fedora", "proxy": "http://proxy.brianlane.com:8123", "system": true "type": "yum-metalink", "url": "https://mirrors.fedoraproject.org/metalink?repo=fedora-28&arch=x86_64" } 
- 
pylorax.api.projects.source_to_repo(source, dnf_conf)[source]¶
- Return a dnf Repo object created from a source dict - Parameters: - source (dict) – A Weldr source dict - Returns: - A dnf Repo object - Return type: - dnf.Repo - Example: - { "check_gpg": True, "check_ssl": True, "gpgkey_urls": [ "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-28-x86_64" ], "name": "fedora", "proxy": "http://proxy.brianlane.com:8123", "system": True "type": "yum-metalink", "url": "https://mirrors.fedoraproject.org/metalink?repo=fedora-28&arch=x86_64" } 
pylorax.api.queue module¶
pylorax.api.recipes module¶
- 
class pylorax.api.recipes.CommitDetails(commit, timestamp, message, revision=None)[source]¶
- Bases: - pylorax.base.DataHolder
- 
class pylorax.api.recipes.Recipe(name, description, version, modules, packages, groups, customizations=None)[source]¶
- Bases: - dict- A Recipe of package and modules - This is a subclass of dict that enforces the constructor arguments 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]¶
- semver recipe version number bump - Parameters: - old_version (str) – An optional old version number - Returns: - The new version number or None - Return type: - str - Raises: - ValueError - If neither have a version, 0.0.1 is returned If there is no old version the new version is checked and returned If there is no new version, but there is a old one, bump its patch level If the old and new versions are the same, bump the patch level If they are different, check and return the new version 
 - 
filename¶
- Return the Recipe’s filename - Replaces spaces in the name with ‘-‘ and appends .toml 
 - 
freeze(deps)[source]¶
- Return a new Recipe with full module and package NEVRA - Parameters: - deps (list() – A list of dependency NEVRA to use to fill in the modules and packages - Returns: - A new Recipe object - Return type: - Recipe 
 - 
group_names¶
- Return the names of the groups. Groups do not have versions. 
 - 
module_names¶
- Return the names of the modules 
 - 
module_nver¶
- Return the names and version globs of the modules 
 - 
package_names¶
- Return the names of the packages 
 - 
package_nver¶
- Return the names and version globs of the packages 
 
- 
- 
pylorax.api.recipes.commit_recipe(repo, branch, recipe)[source]¶
- Commit a recipe to a branch - Parameters: - Returns: - OId of the new commit - Return type: - Git.OId - Raises: - Can raise errors from Ggit 
- 
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: - Returns: - None - Raises: - Can raise errors from Ggit or RecipeFileError - Files with Toml or RecipeFileErrors will be skipped, and the remainder will be tried. 
- 
pylorax.api.recipes.commit_recipe_file(repo, branch, filename)[source]¶
- Commit a recipe file to a branch - Parameters: - Returns: - OId of the new commit - Return type: - Git.OId - Raises: - Can raise errors from Ggit or RecipeFileError 
- 
pylorax.api.recipes.delete_file(repo, branch, filename)[source]¶
- Delete a file from a branch. - Parameters: - Returns: - OId of the new commit - Return type: - Git.OId - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.delete_recipe(repo, branch, recipe_name)[source]¶
- Delete a recipe from a branch. - Parameters: - Returns: - OId of the new commit - Return type: - Git.OId - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.diff_items(title, old_items, new_items)[source]¶
- Return the differences between two lists of dicts. - Parameters: - Returns: - List of diff dicts with old/new entries - Return type: 
- 
pylorax.api.recipes.find_commit_tag(repo, branch, filename, commit_id)[source]¶
- Find the tag that matches the commit_id - Parameters: - Returns: - The tag or None if there isn’t one - Return type: - str or None - There should be only 1 tag pointing to a commit, but there may not be a tag at all. - The tag will look like: ‘refs/tags/<branch>/<filename>/r<revision>’ 
- 
pylorax.api.recipes.find_name(name, lst)[source]¶
- Find the dict matching the name in a list and return it. - Parameters: - name (str) – Name to search for
- lst – List of dict’s with “name” field
 - Returns: - First dict with matching name, or None - Return type: - dict or None 
- 
pylorax.api.recipes.get_commit_details(commit, revision=None)[source]¶
- Return the details about a specific commit. - Parameters: - commit (Git.Commit) – The commit to get details from
- revision (int) – Optional commit revision
 - Returns: - Details about the commit - Return type: - Raises: - CommitTimeValError or Ggit exceptions 
- 
pylorax.api.recipes.get_revision_from_tag(tag)[source]¶
- Return the revision number from a tag - Parameters: - tag (str) – The tag to exract the revision from - Returns: - The integer revision or None - Return type: - int or None - The revision is the part after the r in ‘branch/filename/rXXX’ 
- 
pylorax.api.recipes.head_commit(repo, branch)[source]¶
- Get the branch’s HEAD Commit Object - Parameters: - repo (Git.Repository) – Open repository
- branch (str) – Branch name
 - Returns: - Branch’s head commit - Return type: - Git.Commit - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.is_commit_tag(repo, commit_id, tag)[source]¶
- Check to see if a tag points to a specific commit. - Parameters: - repo (Git.Repository) – Open repository
- commit_id (Git.OId) – The commit id to check
- tag (str) – The tag to check
 - Returns: - True if the tag points to the commit, False otherwise - Return type: 
- 
pylorax.api.recipes.is_parent_diff(repo, filename, tree, parent)[source]¶
- Check to see if the commit is different from its parents - Parameters: - repo (Git.Repository) – Open repository
- filename (str) – filename to revert
- tree (Git.Tree) – The commit’s tree
- parent (Git.Commit) – The commit’s parent commit
 - Retuns: - True if filename in the commit is different from its parents - Return type: 
- 
pylorax.api.recipes.list_branch_files(repo, branch)[source]¶
- Return a sorted list of the files on the branch HEAD - Parameters: - repo (Git.Repository) – Open repository
- branch (str) – Branch name
 - Returns: - A sorted list of the filenames - Return type: - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.list_commit_files(repo, commit)[source]¶
- Return a sorted list of the files on a commit - Parameters: - repo (Git.Repository) – Open repository
- commit (str) – The commit hash to list
 - Returns: - A sorted list of the filenames - Return type: - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.list_commits(repo, branch, filename, limit=0)[source]¶
- List the commit history of a file on a branch. - Parameters: - Returns: - A list of commit details - Return type: - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.open_or_create_repo(path)[source]¶
- Open an existing repo, or create a new one - Parameters: - path (string) – path to recipe directory - Returns: - A repository object - Return type: - Git.Repository - Raises: - Can raise errors from Ggit - A bare git repo will be created in the git directory of the specified path. If a repo already exists it will be opened and returned instead of creating a new one. 
- 
pylorax.api.recipes.prepare_commit(repo, branch, builder)[source]¶
- Prepare for a commit - Parameters: - repo (Git.Repository) – Open repository
- branch (str) – Branch name
- builder (TreeBuilder) – instance of TreeBuilder
 - Returns: - (Tree, Sig, Ref) - Return type: - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.read_commit(repo, branch, filename, commit=None)[source]¶
- Return the contents of a file on a specific branch or commit. - Parameters: - Returns: - The commit id, and the contents of the commit - Return type: - Raises: - Can raise errors from Ggit - If no commit is passed the master:filename is returned, otherwise it will be commit:filename 
- 
pylorax.api.recipes.read_commit_spec(repo, spec)[source]¶
- Return the raw content of the blob specified by the spec - Parameters: - repo (Git.Repository) – Open repository
- spec (str) – Git revparse spec
 - Returns: - Contents of the commit - Return type: - Raises: - Can raise errors from Ggit - eg. To read the README file from master the spec is “master:README” 
- 
pylorax.api.recipes.read_recipe_and_id(repo, branch, recipe_name, commit=None)[source]¶
- Read a recipe commit and its id from git - Parameters: - Returns: - The commit id, and a Recipe object - Return type: - Raises: - Can raise errors from Ggit - If no commit is passed the master:filename is returned, otherwise it will be commit:filename 
- 
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: - Returns: - A Recipe object - Return type: - Raises: - Can raise errors from Ggit - If no commit is passed the master:filename is returned, otherwise it will be commit:filename 
- 
pylorax.api.recipes.recipe_diff(old_recipe, new_recipe)[source]¶
- Diff two versions of a recipe - Parameters: - Returns: - A list of diff dict entries with old/new - Return type: 
- 
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]¶
- Create a Recipe object from a plain dict. - Parameters: - recipe_dict (dict) – A plain dict of the recipe - Returns: - A Recipe object - Return type: - Recipe - Raises: - RecipeError 
- 
pylorax.api.recipes.recipe_from_file(recipe_path)[source]¶
- Return a recipe file as a Recipe object - Parameters: - recipe_path (str) – Path to the recipe fila - Returns: - A Recipe object - Return type: - Recipe 
- 
pylorax.api.recipes.recipe_from_toml(recipe_str)[source]¶
- Create a Recipe object from a toml string. - Parameters: - recipe_str (str) – The Recipe TOML string - Returns: - A Recipe object - Return type: - Recipe - Raises: - TomlError 
- 
pylorax.api.recipes.repo_file_exists(repo, branch, filename)[source]¶
- Return True if the filename exists on the branch - Parameters: - Returns: - True if the filename exists on the HEAD of the branch, False otherwise. - Return type: 
- 
pylorax.api.recipes.revert_file(repo, branch, filename, commit)[source]¶
- Revert the contents of a file to that of a previous commit - Parameters: - Returns: - OId of the new commit - Return type: - Git.OId - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.revert_recipe(repo, branch, recipe_name, commit)[source]¶
- Revert the contents of a recipe to that of a previous commit - Parameters: - Returns: - OId of the new commit - Return type: - Git.OId - Raises: - Can raise errors from Ggit 
- 
pylorax.api.recipes.tag_file_commit(repo, branch, filename)[source]¶
- Tag a file’s most recent commit - Parameters: - Returns: - Tag id or None if it failed. - Return type: - Git.OId - Raises: - Can raise errors from Ggit - This uses git tags, of the form refs/tags/<branch>/<filename>/r<revision> Only the most recent recipe commit can be tagged to prevent out of order tagging. Revisions start at 1 and increment for each new commit that is tagged. If the commit has already been tagged it will return false. 
- 
pylorax.api.recipes.tag_recipe_commit(repo, branch, recipe_name)[source]¶
- Tag a file’s most recent commit - Parameters: - Returns: - Tag id or None if it failed. - Return type: - Git.OId - Raises: - Can raise errors from Ggit - Uses tag_file_commit() 
pylorax.api.server module¶
pylorax.api.v0 module¶
pylorax.api.workspace module¶
- 
pylorax.api.workspace.workspace_delete(repo, branch, recipe_name)[source]¶
- Delete the recipe from the workspace - Parameters: - Returns: - None - Raises: - IO related errors 
- 
pylorax.api.workspace.workspace_dir(repo, branch)[source]¶
- Create the workspace’s path from a Repository and branch - Parameters: - repo (Git.Repository) – Open repository
- branch (str) – Branch name
 - Returns: - The path to the branch’s workspace directory - Return type: