From Fedora Project Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Package Database - SOP

Contact Information

Owner: Fedora Infrastructure Team

Contact: #fedora-admin

Persons: abadger1999

Location: Phoenix

Servers: admin.fedoraproject.org -- app3 app4

Purpose: Manage package ownership

Description

The PackageDB is used by Fedora developers to manage package ownership and acls. It controls who is allowed to commit to a package and who gets notification of changes to packages.

PackageDB project Trac: https://fedorahosted.org/packagedb/

Troubleshooting and Resolution

Adding a new Pseudo User as a package owner

Sometimes you want to have a mailing list own a package so that bugzilla email is assigned to the mailing list. Doing this requires adding a new pseudo user to the account system and assigning that person as the package maintainer.

Idea.png
In the following examples, replace ("xen", "kernel-xen-2.6") with the packages you are assigning to the new user and 9902 to the userid you select in step 2
  • Log into a box that can access db2.
  • Log into the db as a user that can make changes
$ psql -U apache -h db2 fedorausers
fedorausers>
  • Find the current pseudo-users
fedorausers>  select id, username from person where id < 10000 order by id;
id  |     username
------+------------------
9900 | orphan
9901 | anaconda-maint
  • Create a new account with the next available id after 9900
fedorausers> insert into person (id, username, email, human_name, password, creation,
approval_status, otrs_orgid) values (9902, 'xen-maint', 'xen-maint@redhat.com',
'Xen Maintainers', '', now(), 'approved', 'Fedora');
  • Connect to the pkgdb as a user that can make changes
$ psql -U pkgdbadmin -h db2 pkgdb
pkgdb>
  • Add the current package owner as a comaintainer of the package. If this user is not currently on he acls for the package you can use the following database queries:
insert into personpackagelisting (userid, packagelistingid)
select pl.owner, pl.id from packagelisting as pl, package as p
where p.id = pl.packageid and p.name in ('xen', 'kernel-xen-2.6');
insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
select ppl.id, 'build', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
where p.id = pl.packageid and pl.id = ppl.packagelistingid and pl.owner = ppl.userid
and p.name in ('xen', 'kernel-xen-2.6');
insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
select ppl.id, 'commit', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
where p.id = pl.packageid and pl.id = ppl.packagelistingid
and pl.owner = ppl.userid
and p.name in ('xen', 'kernel-xen-2.6');
insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
select ppl.id, 'approveacls', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
where p.id = pl.packageid and pl.id = ppl.packagelistingid
and pl.owner = ppl.userid
and p.name in ('xen', 'kernel-xen-2.6');

If the owner is in the acls, you will need to figure out which packages already acls and only add the new acls for that one.

  • Reassign the pseudo-user to be the new owner
update packagelisting set owner = 9902 from package as p
where packagelisting.packageid = p.id and p.name in ('xen', 'kernel-xen-2.6');