Proxies¶
User interface is separated among multiple proxy classes such as ProjectProxy
, BuildProxy
, etc,
which provide API operations on given resource.
There are several methods available across majority (there are some corner cases where it wouldn’t make sense)
of proxies. Naturally, all methods (e.g. auth_check
) from BaseProxy
are available everywhere. Moreover,
proxies implement get
method to get one specific object and get_list
to get multiple objects that meet some
criteria (e.g. all successful builds from a project). When it makes sense, proxies also implement an edit
method
that modifies an object. Exception for this is for example, a BuildProxy
because it shouldn’t be possible to
change a build. Similarly, most of the proxies have a delete
method except for e.g. BuildChrootProxy
.
Base¶
Project¶
- class copr.v3.proxies.project.ProjectProxy(config)[source]¶
- get(ownername, projectname)[source]¶
Return a project
- Parameters:
ownername (str) –
projectname (str) –
- Returns:
Munch
- get_list(ownername=None, pagination=None)[source]¶
Return a list of projects
- Parameters:
ownername (str) –
pagination –
- Returns:
Munch
- search(query, pagination=None)[source]¶
Return a list of projects based on fulltext search
- Parameters:
query (str) –
pagination –
- Returns:
Munch
- add(ownername, projectname, chroots, description=None, instructions=None, homepage=None, contact=None, additional_repos=None, unlisted_on_hp=False, enable_net=False, persistent=False, auto_prune=True, use_bootstrap_container=None, devel_mode=False, delete_after_days=None, multilib=False, module_hotfixes=False, bootstrap=None, bootstrap_image=None, isolation=None, follow_fedora_branching=True, fedora_review=None, appstream=False, runtime_dependencies=None, packit_forge_projects_allowed=None, repo_priority=None, exist_ok=False)[source]¶
Create a project
- Parameters:
ownername (str) –
projectname (str) –
chroots (list) –
description (str) –
instructions (str) –
homepage (str) –
contact (str) –
additional_repos (list) –
unlisted_on_hp (bool) – project will not be shown on Copr homepage
enable_net (bool) – if builder can access net for builds in this project
persistent (bool) – if builds and the project are undeletable
auto_prune (bool) – if backend auto-deletion script should be run for the project
use_bootstrap_container (bool) – obsoleted, use the ‘bootstrap’ argument and/or the ‘bootstrap_image’.
devel_mode (bool) – if createrepo should run automatically
delete_after_days (int) – delete the project after the specfied period of time
module_hotfixes (bool) – allow packages from this project to override packages from active module streams.
bootstrap (str) – Mock bootstrap feature setup. Possible values are ‘default’, ‘on’, ‘off’, ‘image’.
bootstrap_image (str) – Name of the container image to initialize the bootstrap chroot from. This also implies ‘bootstrap=image’. This is a noop parameter and its value is ignored.
isolation (str) – Mock isolation feature setup. Possible values are ‘default’, ‘simple’, ‘nspawn’.
follow_fedora_branching (bool) – If newly branched chroots should be automatically enabled and populated
fedora_review (bool) – Run fedora-review tool for packages in this project
appstream (bool) – Disable or enable generating the appstream metadata
runtime_dependencies (string) – List of external repositories (== dependencies, specified as baseurls) that will be automatically enabled together with this project repository.
packit_forge_projects_allowed (list) – List of forge projects that will be allowed to build in the project via Packit
- Returns:
Munch
- edit(ownername, projectname, chroots=None, description=None, instructions=None, homepage=None, contact=None, additional_repos=None, unlisted_on_hp=None, enable_net=None, auto_prune=None, use_bootstrap_container=None, devel_mode=None, delete_after_days=None, multilib=None, module_hotfixes=None, bootstrap=None, bootstrap_image=None, isolation=None, follow_fedora_branching=None, fedora_review=None, appstream=None, runtime_dependencies=None, packit_forge_projects_allowed=None, repo_priority=None)[source]¶
Edit a project
- Parameters:
ownername (str) –
projectname (str) –
chroots (list) –
description (str) –
instructions (str) –
homepage (str) –
contact (str) –
repos (list) –
unlisted_on_hp (bool) – project will not be shown on Copr homepage
enable_net (bool) – if builder can access net for builds in this project
auto_prune (bool) – if backend auto-deletion script should be run for the project
use_bootstrap_container (bool) – obsoleted, use the ‘bootstrap’ argument and/or the ‘bootstrap_image’.
devel_mode (bool) – if createrepo should run automatically
delete_after_days (int) – delete the project after the specfied period of time
module_hotfixes (bool) – allow packages from this project to override packages from active module streams.
bootstrap (str) – Mock bootstrap feature setup. Possible values are ‘default’, ‘on’, ‘off’, ‘image’.
isolation (str) – Mock isolation feature setup. Possible values are ‘default’, ‘simple’, ‘nspawn’.
follow_fedora_branching (bool) – If newly branched chroots should be automatically enabled and populated.
bootstrap_image (str) – Name of the container image to initialize the bootstrap chroot from. This also implies ‘bootstrap=image’. This is a noop parameter and its value is ignored.
fedora_review (bool) – Run fedora-review tool for packages in this project
appstream (bool) – Disable or enable generating the appstream metadata
runtime_dependencies (string) – List of external repositories (== dependencies, specified as baseurls) that will be automatically enabled together with this project repository.
packit_forge_projects_allowed (list) – List of forge projects that will be allowed to build in the project via Packit
- Returns:
Munch
- delete(ownername, projectname)[source]¶
Delete a project
- Parameters:
ownername (str) –
projectname (str) –
- Returns:
Munch
- fork(ownername, projectname, dstownername, dstprojectname, confirm=False)[source]¶
Fork a project
- Parameters:
ownername (str) – owner of a source project
projectname (str) – name of a source project
dstownername (str) – owner of a destination project
dstprojectname (str) – name of a destination project
confirm (bool) – if forking into a existing project, this needs to be set to True, to confirm that user is aware of that
- Returns:
Munch
- can_build_in(who, ownername, projectname)[source]¶
Return
True
a user can submit builds for a ownername/projectname- Parameters:
who (str) – name of the user checking their permissions
ownername (str) – owner of the project
projectname (str) – name of the project
- Return Bool:
True
or raise
- get_permissions(ownername, projectname)[source]¶
Get project permissions
- Parameters:
ownername (str) – owner of the project
projectname (str) – name of the project
- Return Munch:
a dictionary in format
{username: {permission: state, ... }, ...}
whereusername
identifies an existing copr user,permission
is one ofadmin|builder
and state is one ofnothing|approved|request
.
- set_permissions(ownername, projectname, permissions)[source]¶
Set (or change) permissions for a project
- Parameters:
ownername (str) – owner of the updated project
projectname (str) – name of the updated project
permissions (dict) – the expected format is
{username: {permission: state, ...}, ...}
whereusername
identifies an existing copr user,permission
is one ofbuilder|admin
andstate
value is one ofnothing|request|approved
. It is OK to set onlybulider
or onlyadmin
permission; any unspecifiedpermission
is then (a) set tonothing
(if the permission entry is newly created), or (b) kept unchanged (if an existing permission entry is edited). If more than oneusername
is specified in singleset_permissions()
request, the approach is to configure all-or-nothing (any error makes the whole operation fail and no-op).
- request_permissions(ownername, projectname, permissions)[source]¶
Request/cancel request/drop your permissions on project
- Parameters:
ownername (str) – owner of the requested project
projectname (str) – name of the requested project
permissions (dict) – the desired permissions user wants to have on the requested copr project. The format is
{permission: bool, ...}
, wherepermission
is one ofbuilder|admin
andbool
is (a)True
for requesting the role or (b)False
for dropping the role (or for cancelling of previous request).
Build¶
- class copr.v3.proxies.build.BuildProxy(config)[source]¶
-
- get_source_chroot(build_id)[source]¶
Return a source build
- Parameters:
build_id (int) –
- Returns:
Munch
- get_source_build_config(build_id)[source]¶
Return a config for source build
- Parameters:
build_id (int) –
- Returns:
Munch
- get_built_packages(build_id)[source]¶
Return built packages (NEVRA dicts) for a given build
- Parameters:
build_id (int) –
- Returns:
Munch
- get_list(ownername, projectname, packagename=None, status=None, pagination=None)[source]¶
Return a list of packages
- Parameters:
ownername (str) –
projectname (str) –
packagename (str) –
status (str) –
pagination –
- Returns:
Munch
- create_from_urls(ownername, projectname, urls, buildopts=None, project_dirname=None)[source]¶
Create builds from a list of URLs
- Parameters:
ownername (str) –
projectname (str) –
urls (list) –
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Returns:
Munch
- create_from_url(ownername, projectname, url, buildopts=None, project_dirname=None)[source]¶
Create a build from URL
- Parameters:
ownername (str) –
projectname (str) –
url (str) –
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Returns:
Munch
- create_from_file(ownername, projectname, path, buildopts=None, project_dirname=None)[source]¶
Create a build from local SRPM file
- Parameters:
ownername (str) –
projectname (str) –
path (str) –
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Returns:
Munch
- check_before_build(ownername, projectname, project_dirname=None, buildopts=None)[source]¶
Check if a build can be submitted (if the project exists, you have permissions, the chroot exists, etc). This is useful before trying to upload a large SRPM and failing to do so.
- Parameters:
ownername (str) –
projectname (str) –
project_dirname (str) –
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
- Returns:
Munch
- create_from_scm(ownername, projectname, clone_url, committish='', subdirectory='', spec='', scm_type='git', source_build_method='rpkg', buildopts=None, project_dirname=None)[source]¶
Create a build from SCM repository
- Parameters:
ownername (str) –
projectname (str) –
clone_url (str) – url to a project versioned by Git or SVN
committish (str) – name of a branch, tag, or a git hash
subdirectory (str) – path to a subdirectory with package content
spec (str) – path to spec file, relative to ‘subdirectory’
scm_type (str) –
source_build_method (str) –
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Returns:
Munch
- create_from_distgit(ownername, projectname, packagename, committish=None, namespace=None, distgit=None, buildopts=None, project_dirname=None)[source]¶
Create a build from a DistGit repository
- Parameters:
ownername (str) –
projectname (str) –
packagename (str) – the DistGit package name to build
committish (str) – name of a branch, tag, or a git hash
namespace (str) – DistGit namespace, e.g. ‘@copr/copr’ for the ‘@copr/copr/copr-cli’ package
distgit (str) – the DistGit instance name we build against, for example ‘fedora’. Optional, and the default is deployment specific.
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Returns:
Munch
- create_from_pypi(ownername, projectname, pypi_package_name, pypi_package_version=None, spec_template='', python_versions=None, buildopts=None, project_dirname=None, spec_generator=None)[source]¶
Create a build from PyPI - https://pypi.org/
- Parameters:
ownername (str) –
projectname (str) –
pypi_package_name (str) –
pypi_package_version (str) – PyPI package version (None means “latest”)
spec_template (str) – what pyp2rpm spec template to use
python_versions (list) – list of python versions to build for
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
spec_generator (str) – what tool should be used for spec generation
- Returns:
Munch
- create_from_rubygems(ownername, projectname, gem_name, buildopts=None, project_dirname=None)[source]¶
Create a build from RubyGems - https://rubygems.org/
- Parameters:
ownername (str) –
projectname (str) –
gem_name (str) –
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Returns:
Munch
- create_from_custom(ownername, projectname, script, script_chroot=None, script_builddeps=None, script_resultdir=None, script_repos=None, buildopts=None, project_dirname=None)[source]¶
Create a build from custom script.
- Parameters:
ownername (str) –
projectname (str) –
script – script to execute to generate sources
script_chroot – [optional] what chroot to use to generate sources (defaults to fedora-latest-x86_64)
script_builddeps – [optional] list of script’s dependencies
script_resultdir – [optional] where script generates results (relative to cwd)
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Parm script_repos:
[optional] external repositories containing script’s dependencies
- Returns:
Munch
Package¶
- class copr.v3.proxies.package.PackageProxy(config)[source]¶
- get(ownername, projectname, packagename, with_latest_build=False, with_latest_succeeded_build=False)[source]¶
Return a package
- Parameters:
ownername (str) –
projectname (str) –
packagename (str) –
with_latest_build (bool) – The result will contain “builds” dictionary with the latest submitted build of this particular package within the project
with_latest_succeeded_build (bool) – The result will contain “builds” dictionary with the latest successful build of this particular package within the project.
- Returns:
Munch
- get_list(ownername, projectname, pagination=None, with_latest_build=False, with_latest_succeeded_build=False)[source]¶
Return a list of packages
- Parameters:
ownername (str) –
projectname (str) –
pagination –
with_latest_build (bool) – The result will contain “builds” dictionary with the latest submitted build of this particular package within the project
with_latest_succeeded_build (bool) – The result will contain “builds” dictionary with the latest successful build of this particular package within the project.
- Returns:
Munch
- add(ownername, projectname, packagename, source_type, source_dict)[source]¶
Add a package to a project
- Parameters:
ownername (str) –
projectname (str) –
packagename (str) –
source_type (str) – http://python-copr.readthedocs.io/en/latest/client_v3/package_source_types.html
source_dict (dict) – http://python-copr.readthedocs.io/en/latest/client_v3/package_source_types.html
- Returns:
Munch
- edit(ownername, projectname, packagename, source_type=None, source_dict=None)[source]¶
Edit a package in a project
- Parameters:
ownername (str) –
projectname (str) –
packagename (str) –
source_type – http://python-copr.readthedocs.io/en/latest/client_v3/package_source_types.html
source_dict (dict) – http://python-copr.readthedocs.io/en/latest/client_v3/package_source_types.html
- Returns:
Munch
- reset(ownername, projectname, packagename)[source]¶
Reset a package configuration, meaning that previously selected
source_type
for the package and also all the source configuration previously defined bysource_dict
will be nulled.- Parameters:
ownername (str) –
projectname (str) –
packagename (str) –
- Returns:
Munch
- build(ownername, projectname, packagename, buildopts=None, project_dirname=None)[source]¶
Create a build from a package configuration
- Parameters:
ownername (str) –
projectname (str) –
packagename (str) –
buildopts – http://python-copr.readthedocs.io/en/latest/client_v3/build_options.html
project_dirname (str) –
- Returns:
Munch
Module¶
- class copr.v3.proxies.module.ModuleProxy(config)[source]¶
Monitor¶
- class copr.v3.proxies.monitor.MonitorProxy(config)[source]¶
Proxy to process /api_3/monitor requests.
- monitor(ownername, projectname, project_dirname=None, additional_fields=None)[source]¶
Return a list of project packages, and corresponding info for the latest chroot builds.
- Parameters:
ownername (str) –
projectname (str) –
project_dirname (str) –
additional_fields (list) – List of additional fields to return in the dictionary. Possible values:
url_build_log
,url_backend_log
,build_url
. Note that additional fields may significantly prolong the server response time.
- Returns:
Munch a list of dictionaries, formatted like:
{ "name": package_name, "chroots": { "fedora-rawhide-x86_64": { "build_id": 843616, "status": "succeeded", ... fields ..., } }, }
Project Chroot¶
- class copr.v3.proxies.project_chroot.ProjectChrootProxy(config)[source]¶
- get(ownername, projectname, chrootname)[source]¶
Return a configuration of a chroot in a project
- Parameters:
ownername (str) –
projectname (str) –
chrootname (str) –
- Returns:
Munch
- get_build_config(ownername, projectname, chrootname)[source]¶
Return a build configuration of a chroot in a project
- Parameters:
ownername (str) –
projectname (str) –
chrootname (str) –
- Returns:
Munch
- edit(ownername, projectname, chrootname, additional_packages=None, additional_repos=None, additional_modules=None, comps=None, delete_comps=False, with_opts=None, without_opts=None, bootstrap=None, bootstrap_image=None, isolation=None, reset_fields=None)[source]¶
Edit a chroot configuration in a project
- Parameters:
ownername (str) –
projectname (str) –
chrootname (str) –
additional_packages (list) – buildroot packages for the chroot
additional_repos (list) – buildroot additional additional_repos
additional_modules (list) – list of modules that will be enabled or disabled in the given chroot, e.g. [‘module1:stream’, ‘!module2:stream’].
comps (str) – file path to the comps.xml file
delete_comps (bool) – if True, current comps.xml will be removed
with_opts (list) – Mock –with option
without_opts (list) – Mock –without option
bootstrap (str) – Allowed values ‘on’, ‘off’, ‘image’, ‘default’, ‘untouched’ (equivalent to None)
bootstrap_image (str) – Implies ‘bootstrap=image’.
isolation (str) – Mock isolation feature setup. Possible values are ‘default’, ‘simple’, ‘nspawn’.
reset_fields (list) – list of chroot attributes, that should be reseted to their respective defaults. Possible values are
additional_packages
,additional_modules
,isolation
, etc. See the output ofProjectProxy.get
for all the possible field names.
- Returns:
Munch
Build Chroot¶
- class copr.v3.proxies.build_chroot.BuildChrootProxy(config)[source]¶
- get(build_id, chrootname)[source]¶
Return a build chroot
- Parameters:
build_id (int) –
chrootname (str) –
- Returns:
Munch
- get_list(build_id, pagination=None)[source]¶
Return a list of build chroots
- Parameters:
build_id (int) –
chrootname (str) –
pagination –
- Returns:
Munch