From Fedora Project Wiki

JSON web API

This is a JSON web API implemented as TurboGears2 app. There is no web interface at this point. The API is supposed to be used with the help of the client library or the future web interface.

The available methods are grouped into copr-related and package-related methods.

Coprs

/coprs/*

A copr is a group of package repositories belonging to a user. A REST interface is provided, with the following methods:

  • get_all - Return all the Copr objects.
  • get_one - Return the Copr specified by 'copr_name'.
  • post - Create a new Copr from the given arguments.
  • put - Edit an existing Copr.
  • delete - Delete the Copr specified by 'copr_name'.

There are other additional methods available for managing: copr dependencies (Coprs can depend on other Coprs for BuildRequires dependencies), copr releases and for managing permissions:

  • add_dependencies - Add one or more Copr objects as dependencies for a Copr.
  • remove_dependencies - Remove the list of specified dependencies for a Copr.
  • add_releases - Add one or more releases to an existing Copr
  • remove_releases - Remove one or more releases from an existing Copr.
  • grant - Grant a user some permission on a Copr.
  • revoke - Revoke a given user's permission on a Copr.

Packages

/coprs/my_copr/packages/*

A package is roughly equivalent to a SRPM - it is independent of any release or architecture. All of the methods are relative to a copr, receive that copr as the first argument and the package also belongs to a specific copr. The available methods are:

  • get_all - Return all the packages in a copr.
  • get_one - Return information about a package.
  • post - Create a new package.
  • delete - Delete an existing package from a Copr.

client library

All of the Copr API methods described above are available via a python client library. Users of the client library can access the functions like this:

from copr.client.lib import CoprClient
client = CoprClient(username='fedorian', password='mysecret')
client.copr_list()
client.copr_create(copr_name, copr_description, release, dependency_list)
...

The methods have different names in the client library. The following is a list of all the available methods (name in API/name in client lib):

Coprs:

  • get_all - copr_list
  • get_one - copr_info
  • post - copr_create
  • put - copr_edit
  • delete - copr_delete
  • add_releases - copr_add_releases
  • remove_releases - copr_remove_releases
  • add_dependencies - copr_add_dependencies
  • remove_dependencies - copr_remove_dependencies
  • grant - copr_grant
  • revoke - copr_revoke

Packages:

  • get_all - pkg_list
  • get_one - pkg_info
  • post - pkg_create
  • delete - pkg_delete

command-line client

The command line client can be used by invoking the bin.py file (which will probably be installed by the package in /usr/bin/copr). Following is the list of available commands available via the --help argument:

 $ python client/bin.py --help
 usage: bin.py [-h] [-v] [-u USERNAME] [-p] [--url URL]

               {remove-copr-deps,list-pkgs,list-coprs,info-copr,add-copr-deps,create-pkg,edit-copr,delete-copr,create-copr,grant-copr,revoke-copr,add-copr-releases,remove-copr-releases,delete-pkg,info-pkg}
               ...

 Command line tool for interacting with Fedora Copr

 positional arguments:
   {remove-copr-deps,list-pkgs,list-coprs,info-copr,add-copr-deps,create-pkg,edit-copr,delete-copr,create-copr,grant-copr,revoke-copr,add-copr-releases,remove-copr-releases,delete-pkg,info-pkg}
     list-coprs          list all the available Coprs
     info-copr           get information about a specific Copr
     create-copr         create a new Copr
     edit-copr           edit an existing copr
     delete-copr         delete an existing copr
     add-copr-deps       add dependencies to a copr
     remove-copr-deps    remove dependencies from a copr
     add-copr-releases   add releases to a copr
     remove-copr-releases
                         remove releases from a copr
     grant-copr          grant permission on a copr
     revoke-copr         revoke permission on a copr
     list-pkgs           list all the packages in a copr
     info-pkg            get information on a package
     create-pkg          create a new package by uploading a srpm
     delete-pkg          delete a package

 optional arguments:
   -h, --help            show this help message and exit
   -v, --version
   --url URL             provide an alternate url for the Copr service

 authentication:
   -u USERNAME, --username USERNAME
   -p, --password

func module

The func module allows for building packages and managing RPM repos. It will be installed on func minions which should get called by the Copr task scheduler - headhunter.

  • create_copr - Creates a new copr repository (createrepo) on a network filesystem and empty repos for each of the initial repositories provided as an argument.
  • remove_repos - Deletes a repository of a Copr and all the packages contained in that repository.
  • async_build_x86 - Builds a package asynchronously with mock. The mock build environment can be augmented with other copr repositories provided as a list of copr names. The built packages are then moved to a temporary directory.
  • move_to_copr - Moves a built package (RPMS and SRPMS) from the temporary directory provided as an argument to the designated copr repositories and updates the repository (with createrepo --update).