api Package

api Package

pylorax.api.crossdomain(origin, methods=None, headers=None, max_age=21600, attach_to_all=True, automatic_options=True)

bisect Module

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:
  • a (list) – sorted list
  • x (object) – item to insert into the list
  • key (function) – Function to use to compare items in the list
Returns:

index where the item was inserted

Return type:

int

If x is already in a, insert it to the left of the leftmost x. Optional args lo (default 0) and hi (default len(a)) bound the slice of a to be searched.

This is a modified version of bisect.insort_left that can use a function for the compare, and returns the index position where it was inserted.

checkparams Module

pylorax.api.checkparams.checkparams(tuples)[source]

compose Module

config Module

class pylorax.api.config.ComposerConfig(defaults=None, dict_type=<class 'collections.OrderedDict'>, allow_no_value=False)[source]

Bases: ConfigParser.SafeConfigParser

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

lorax-composer configuration

Parameters:
  • conf_file (str) – Path to the config file overriding the default settings
  • root_dir (str) – Directory to prepend to paths, defaults to /
  • test_config (bool) – Set to True to skip reading conf_file
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.config.make_yum_dirs(conf)[source]

Make any missing yum directories

Parameters:conf (ComposerConfig) – The configuration to use
Returns:None

crossdomain Module

pylorax.api.crossdomain.crossdomain(origin, methods=None, headers=None, max_age=21600, attach_to_all=True, automatic_options=True)[source]

errors Module

projects Module

exception pylorax.api.projects.ProjectsError[source]

Bases: exceptions.Exception

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.dep_nevra(dep)[source]

Return the name-epoch:version-release.arch

pylorax.api.projects.estimate_size(packages, block_size=4096)[source]

Estimate the installed size of a package list

Parameters:
  • packages (list of TransactionMember 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:

int

Estimating actual requirements is difficult without the actual file sizes, which yum doesn’t provide access to. So use the file count and block size to estimate a minimum size for each package.

pylorax.api.projects.filterVersionGlob(pkgs, version)[source]

Filter a list of yum package objects with a version glob

Parameters:
  • pkgs (list) – list of yum package objects
  • version (str) – version matching glob

pkgs should be a list of all the versions of the same package. Return the latest package that matches the ‘version’ glob.

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(yb, module_names)[source]

Return details about a module, including dependencies

Parameters:
  • yb (YumBase) – yum 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(yb, module_names)[source]

Return a list of modules

Parameters:
  • yb (YumBase) – yum 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.proj_to_module(proj)[source]

Extract the name from a YumAvailablePackageSqlite object

Parameters:proj (dict) – Project details
Returns:A dict with name, and group_type
Return type:dict

group_type is hard-coded to “rpm”

pylorax.api.projects.projects_depsolve(yb, projects, groups)[source]

Return the dependencies for a list of projects

Parameters:
  • yb (YumBase) – yum base object
  • projects (List of tuples) – The projects and version globs 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(yb, projects, groups, with_core=True)[source]

Return the dependencies and installed size for a list of projects

Parameters:
  • yb (YumBase) – yum base object
  • projects (List of tuples) – The projects and version globs 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(yb, project_names)[source]

Return details about specific projects

Parameters:
  • yb (YumBase) – yum base object
  • project_names (str) – List of names of projects to get info about
Returns:

List of project info dicts with yaps_to_project as well as epoch, version, release, etc.

Return type:

list of dicts

pylorax.api.projects.projects_list(yb)[source]

Return a list of projects

Parameters:yb (YumBase) – yum 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 YumRepository

Parameters:
  • repo (yum.yumRepo.YumRepository) – Yum Repository
  • system_source (bool) – True if this source is an immutable system source
Returns:

A dict with Weldr Source fields filled in

Return type:

dict

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)[source]

Return an add_enable_repo kwargs dict created from a source dict

Parameters:source (dict) – A Weldr source dict
Returns:A yum YumRepository object
Return type:yum.yumRepo.YumRepository

The dict it suitable for passing to yum’s add_enable_repo function after popping off baseurl and mirrorlist.

Example:

{
  "gpgcheck": True,
  "sslverify": True,
  "gpgkey": ["file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-28-x86_64"],
  "id": "fedora",
  "proxy": "http://proxy.brianlane.com:8123",
  "baseurl": "https://mirrors.fedoraproject.org/metalink?repo=fedora-28&arch=x86_64",
  "metalink": None,
  "mirrorlist": None
}
pylorax.api.projects.tm_to_dep(tm)[source]

Extract the info from a TransactionMember object

Parameters:tm (TransactionMember) – A Yum transaction object
Returns:A dict with name, epoch, version, release, arch
Return type:dict
pylorax.api.projects.yaps_to_build(yaps)[source]

Extract the build details from a hawkey.Package object

Parameters:yaps (YumAvailablePackageSqlite) – Yum 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.yaps_to_project(yaps)[source]

Extract the details from a YumAvailablePackageSqlite object

Parameters:yaps (YumAvailablePackageSqlite) – Yum 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.yaps_to_project_info(yaps)[source]

Extract the details from a YumAvailablePackageSqlite object

Parameters:yaps (YumAvailablePackageSqlite) – Yum 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.yum_repo_to_file_repo(repo)[source]

Return a string representation of a repo dict suitable for writing to a .repo file

Parameters:repo (dict) – Yum Repository represented as a dict
Returns:A string
Return type:str

The YumRepo.dump() function does not produce a string that can be used as a yum .repo file. So do this manually with only the attributes we care about.

queue Module

recipes Module

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

Bases: pylorax.base.DataHolder

exception pylorax.api.recipes.CommitTimeValError[source]

Bases: exceptions.Exception

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[source]

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[source]

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

module_names[source]

Return the names of the modules

module_nver[source]

Return the names and versions of the modules

package_names[source]

Return the names of the packages

package_nver[source]

Return the names and versions of the packages

toml()[source]

Return the Recipe in TOML format

exception pylorax.api.recipes.RecipeError[source]

Bases: exceptions.Exception

exception pylorax.api.recipes.RecipeFileError[source]

Bases: exceptions.Exception

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

Bases: dict

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

Bases: dict

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

Bases: pylorax.api.recipes.RecipeModule

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

Commit a recipe to a branch

Parameters:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe (Recipe) – Recipe to commit
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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • directory (str) – The directory of *.toml recipes to commit
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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – Path to the recipe file to commit
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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – filename to delete
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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe_name (str) – Recipe name to delete
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:
  • title (str) – Title of the entry
  • old_items (list(dict)) – List of item dicts with “name” field
  • new_items (list(dict)) – List of item dicts with “name” field
Returns:

List of diff dicts with old/new entries

Return type:

list(dict)

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

Find the tag that matches the commit_id

Parameters:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – filename to revert
  • commit_id (Git.OId) – The commit id to check
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:

CommitDetails

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.gfile(path)[source]

Convert a string path to GFile for use with Git

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:

bool

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:

bool

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:

list(str)

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:

list(str)

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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – filename to revert
  • limit (int) – Number of commits to return (0=all)
Returns:

A list of commit details

Return type:

list(CommitDetails)

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:

tuple

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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – filename to read
  • commit (str) – Optional commit hash
Returns:

The commit id, and the contents of the commit

Return type:

tuple(str, str)

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:

str

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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe_name (str) – Recipe name to read
  • commit (str) – Optional commit hash
Returns:

The commit id, and a Recipe object

Return type:

tuple(str, Recipe)

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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe_name (str) – Recipe name to read
  • commit (str) – Optional commit hash
Returns:

A Recipe object

Return type:

Recipe

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:
  • old_recipe (Recipe) – The old version of the recipe
  • new_recipe (Recipe) – The new version of the recipe
Returns:

A list of diff dict entries with old/new

Return type:

list(dict)

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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – Filename to check
Returns:

True if the filename exists on the HEAD of the branch, False otherwise.

Return type:

bool

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

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

Parameters:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – filename to revert
  • commit (str) – Commit hash
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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe_name (str) – Recipe name to revert
  • commit (str) – Commit hash
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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – Filename to tag
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:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe_name (str) – Recipe name to tag
Returns:

Tag id or None if it failed.

Return type:

Git.OId

Raises :

Can raise errors from Ggit

Uses tag_file_commit()

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

Make a new commit to a repository’s branch

Parameters:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • filename (str) – full path of the file to add
  • message (str) – The commit message
  • content (str) – The data to write
Returns:

OId of the new commit

Return type:

Git.OId

Raises :

Can raise errors from Ggit

regexes Module

server Module

timestamp Module

pylorax.api.timestamp.timestamp_dict(destdir)[source]
pylorax.api.timestamp.write_timestamp(destdir, ty)[source]

v0 Module

workspace Module

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

Delete the recipe from the workspace

Parameters:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe_name (str) – The name of the recipe
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:

str

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

Read a Recipe from the branch’s workspace

Parameters:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe_name (str) – The name of the recipe
Returns:

The workspace copy of the recipe, or None if it doesn’t exist

Return type:

Recipe or None

Raises :

RecipeFileError

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

Write a recipe to the workspace

Parameters:
  • repo (Git.Repository) – Open repository
  • branch (str) – Branch name
  • recipe (Recipe) – The recipe to write to the workspace
Returns:

None

Raises :

IO related errors

yumbase Module

class pylorax.api.yumbase.YumLock(conf, expire_secs=21600)[source]

Bases: object

Hold the YumBase object and a Lock to control access to it.

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

lock[source]

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

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

lock_check[source]

Force a check for repo updates and return the lock

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

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

pylorax.api.yumbase.get_base_object(conf)[source]

Get the Yum object with settings from the config file

Parameters:conf (ComposerParser) – configuration object
Returns:A Yum base object
Return type:YumBase
pylorax.api.yumbase.update_metadata(yb)[source]

Update the metadata for all the enabled repos

Parameters:yb (yum.YumBase) – The Yum base object
Returns:None
Return type:None