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)[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)[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/projectnameParameters: - 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
-