Using the package database

= Using the Fedora Package Database =

The Package Database is the place where we track ownership of packages and permissions on who is allowed to commit to a package.

Where is the Package Database?
The packagedb is located at https://admin.fedoraproject.org/pkgdb/

Where should I go from there?
The links on the left side of the main page give you access to the major views of the information in the Package Database.


 * The View Collections, View Packages , and View Bugs links allow you to browse through a list of packages, looking for information on them.
 * My Packages lets you look at the list of packages you own.
 * Orphan Packages displays a list of packages which are orphaned in one or more active branches.
 * Project Page and Report Bugs  Take you to the Package Database's project page for getting involved with development of the PackageDB code.

What's the fastest way to find a package?
Currently, there's no UI to search for a package or go directly to it. However, if you want to avoid having to go through the complete list of packages you can access a specific package by modifying the URL. Simply replace PACKAGENAME in the following URL with the name of the package you're interested in: https://admin.fedoraproject.org/pkgdb/packages/name/PACKAGENAME

If you'd like to help implement package search, have a look at this ticket.

Logging in
The upper right hand corner of the Package Database has a brief message that says. When you click on Login, you are asked to enter your Fedora username and password. Once these are entered, you will be able to make changes in the Package Database.

How do I sign up for a package?
Navigate to the package's page in the Package Database. If you have not logged in, go ahead and do that now. At this point you should be back at the package's page and have a button labeled  that you can press to request access to a certain package on a certain branch. Once you've selected that button, you can check off the checkboxes for each acl you're interested in.


 * watchcommits and watchbugzilla are for receiving email notifications for package changes.
 * commit is for access to commit to the SCM.
 * approveacls is to be allowed to approveacls just like the package owner.

I'm the package maintainer, how do I give someone commit access to my package?
Currently you have to ask the person you want to have access request acls on the package. When that happens, you will be sent an email to approve their request. You can then go to the package in the Package Database and approve their request.

There are two tickets relevant to this in the PackageDB. If you'd like to help make this feature better, feel free to work on them:
 * Send reminders of outstanding acl approval requests
 * Allow Package Maintainers to add people

How do I find orphaned packages that I can take over?
This information is currently scattered in several places. We are working on consolidating it in the packagedb: https://admin.fedoraproject.org/pkgdb/users/packages/orphan

But information is currently also present in the wiki: http://fedoraproject.org/wiki/PackageMaintainers/OrphanedPackages http://fedoraproject.org/wiki/PackageMaintainers/RetiredPackages

If you'd like to work on migrating this information into the PackageDB, please see this ticket.

How can I find my packages?
The easiest way to find the packages you work with is to view the overview of your packages. This is accessed from https://admin.fedoraproject.org/pkgdb/users/packages/

This view shows you every package for which you have an acl in a non-EOL branch. (So a package for which you only have watchbugzilla in EPEL4 will show up. A package for which you are the owner in Fedora Core 3 will not.)

How can I only list packages I'm comaintainer of?
The packagedb allows filtering the list of packages. Using the filter box on https://admin.fedoraproject.org/pkgdb/users/packages is the recommended method. Enterprising users can change the URL directly. To use it, add  to the end of the user url. ACL1 through ACLN can be any combination of the following:


 * owner: you are the package owner
 * commit: you are allowed to commit to the package
 * approveacls: you can approve and change acls on the package
 * watchbugzilla: you are watching bugzilla entries for this package
 * watchcommits: you are watching commits for this package

Here's an example that lists what people usually think of as packages they're a comaintainer of: https://admin.fedoraproject.org/pkgdb/users/packages/?acls=owner&acls=commit&acls=approveacls

How can I list packages which I was interested in on an EOL branch?
Add  to the end of the url.

Here's an example that lists packages that you were the package owner including EOL branches: https://admin.fedoraproject.org/pkgdb/users/packages/?acls=owner&EOL=True

How can I add a new package or add a package to a new branch?
These actions require manual work to be done by an administrator so follow the steps in package SCM admin requests.

Eventually we hope to make these steps more automated with a form to request a new branch and another form to request a new package. If you'd like to work on this, please see this ticket

PackageDB API
Some of the PackageDB data can be accessed by scripts as JSON or plain text data. This data is made available to make scripting easier. If a page supports plain text, it can be retrieved that way by appending  to the Base URL. If it can be retrieved as JSON data, appending  will retrieve the information in that way.

The best way to retrieve this data is by using the client library present in python-fedora. then setup a pkgdb client object and call methods on it like this:

from fedora.client import PackageDB pkgdb = PackageDB(username='me', password='XXXX') pkgdb.get_bugzilla_acls
 * 1) username and password are optional -- in general, only methods that
 * 2) modify data will need them to have been specified

Documentation for the pkgdb module of python-fedora is here: https://fedorahosted.org/releases/p/y/python-fedora/doc/existing.html#pkgdb

If, for some reason, you must retrieve the information without the help of the client library, you can use the urls directly like this. For instance, Bugzilla Acls can be retrieved in the following ways:

HTML: https://admin.fedoraproject.org/pkgdb/lists/bugzilla

Plain Text: https://admin.fedoraproject.org/pkgdb/lists/bugzilla?tg_format=plain

JSON: https://admin.fedoraproject.org/pkgdb/lists/bugzilla?tg_format=json

Each method exposed to the user has a different rating for stability depending on several criteria:
 * Stable: The format of data, URL location, and query parameters are not expected to change. If changes occur, they will be announced and deprecated ahead of time.
 * Proven: The data format is stable. URL location and query parameters may change but a method of retrieving the data in its current form will remain available.  API with this status will have notes to explain just how much it can be depended on.
 * In Flux: The data being exposed by this method will continue but the URL location, format, or query parameters to retrieve it may change.
 * Unstable: Anything about this method could change including disappearing entirely.

Bugzilla Acls
The bugzilla acl page returns information about package ownership, summary information, and initialcclist that bugzilla needs to know. At present (and unless a change occurs in bugzilla that would obviate this), the information is based on the information for the latest release of the product. At the moment Nov, 19, 2007, those are Fedora Devel, Fedora EPEL 5, and Fedora OLPC 2.

VCS Acls
The VCS Acls page returns information about who can commit to a package.

User Package List
Returns a list of packages belonging to the user with the ability to filter on certain acls via query params. The query params may be added to in the future and the URL location may change as well.

Change Package Info
This is the only method to change information in the database but the API is going to be changing radically.