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: 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:
-
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.
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: