The future of pkgdb

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(adding the releng list on CC, please keep the reply on the infra list)


Hi Everyone,

Following up on the thread about pagure on the top of dist-git started a
few days ago Ralph Bean, Matthew Prahl and I had a quick meeting just a few
minutes ago about the future of pkgdb.

Most of the content of the email is based on the notes we took during the
meeting, so I hope it is understandable for everyone. I have added some
context compared to the original notes, but feel free to ask questions if
there are any missing pieces or things that are unclear.

The idea is that with pagure becoming a front-end to dist-git, there is less
needs for pkgdb. So we tried to list all what pkgdb does and propose
solutions for each of these.

Let's start with the start: what does pkgdb do?
- Store point of contact for a package           default assignee on bugzilla
- Store commit access for a package              commit ACL
- Store admin access for a package               approveacls ACL
- Store CC list for bug reports on the package   watchbugzilla ACL
- Store CC list for changes made to the package  watchcommits ACL
- Store new package requests
- Store new EPEL branch requests
- Allow creating new Fedora branch on demand
- Store which packages are orphaned
- Store which packages are retired
- Store collection/branches status
- Store anitya integration flag
- Store koshei integration flag
- Store critpath status


The main idea we have is to rely on pagure and PDC for as much as possible
and having a special project on pagure to use as a ticket/queuing system
for requests. This project could then be interacted with using a CLI tool.

Now going through each of the requirements listed above
- Store point of contact for a package (default assignee on bugzilla)
  - we could use the first committer, alphabetically
  - we could use the 'owner', but we need pagure to be able to "give" a
    repo which it currently cannot.
  - in order to "orphan" a package, we need this.
  - we could list the default assignee in the yaml file in dist-git
    - Not ideal since less "self-service"
- Store commit access for a package (commit ACL)
  - Use the list of people with commit or admin access to the package
- Store admin access for a package   (approveacls ACL)
  - Handled in pagure directly by the people having admin access to the
    package
    - Need a way to prevent groups from having admin access (like we
      prevented groups from having approveacls in pkgdb)
- Store CC list for changes made to the package (watchcommits ACL)
  - use the pagure "watch" feature.
- Store CC list for bug reports on the package  (watchbugzilla ACL)
  - grow the ability in pagure to watch issues versus watch commits.
  - in the meantime, just use watch commits for both.
  - Factory 2.0 will handle this
- Store new package requests
  - matt prahl is already cooking up a way to do this using a
    https://pagure.io/repo-requests/issues/ queue and some scripts.
    - https://pagure.io/fedrepo_req/pull-request/1
  - !!! we have problems using pagure ticket queue here (api tokens, need
        commit or really admin access...)
    - other options:
      - bugzilla
      - custom made queue
      - fpaste!
      - patch pagure to do what we need.
        -> Add the possibility to select a project in
           https://pagure.io/settings/token/new and allow there the
           issue_create, issue_update and issue_comment ACLs
        -> Add the possibility to set the duration of the token (with
           an upper limit: 365 days?) (per token with a default in the
           config file?)
        -> pingou will handle this
- Store new EPEL branch requests
  - same as above.
    - for the first seven days, don't show these in pkgdb-admin (or
      equivalent) unless there are one or more comments from another package
      maintainer.
- Allow creating new Fedora branch on demand
  - except we want this to be for creating *any* new branch request "like
    branch 2.0.x"
    - make a little itty bitty approving service (IBAS) for auto-approving
      these in a small way.
      - it should re-use our replacement for pkgdb-admin under the hood so
        we don't duplicate code.
      - if some hard-coded set of checks pass then, auto-approve.
        - checks like "is the EOL under 2 years?"  "does the branch name
          not include any non-ascii characters?"  "run it through a swear
          words dictionary"
      - otherwise, leave in the queue for manual processing.
- Store which packages are orphaned
  - these are just owned by the orphan user in pagure
    - step 1, the orphan user is the only committer.
    - step 2, when pagure grows the ability to "give" a project, then make
      the orphan user the real owner.
    - Factory 2.0 may handle this. Let pingou know
- Store which packages are retired
  - in consultation with dgilmore, we don't think we need this anymore.
    - the dead.package file is sufficient.  we still need to propagate
      blockage to koji (so listen on fedmsg for changes to that file instead
      of listening for pkgdb message about status change).
  - Also store this into PDC.  it will be represented by the "active"
    True/False flag on each branch.
- Store collection/branches status
  - this is going to PDC as well (for modularity work, cf the video below)
    - https://fedorapeople.org/groups/factory2/sprint-014/mprahl-pdc-sla-apis.mp4
- Store anitya integration flag
  - store this in a yaml/toml file in the dist-git repo
  - let the consumers
    - do an http request to retrieve the file
    - listen to fedmsg to catch changes to this file (and update a local
      cache based on this)
- Store koshei integration flag
  - store this in a yaml/toml file in the dist-git repo
  - let the consumers
    - do an http request to retrieve the file
    - listen to fedmsg to catch changes to this file (and update a local
      cache based on this)
- Store critpath status
  - Store this in PDC and make it per branch

So with the proposed solution above, everything would be stored in:
  - the git repo itself
  - the pagure project of the package
  - a pagure project for requests
  - PDC

Now pkgdb interacts with a few known applications that will need to be adjusted
for this:
- the-new-hotness
  - Cf the point about anitya above
- koshei
  - Cf the point about koshei above
- zodbot
  - will have to query the pagure API to find who has access
- bodhi
  - will have to query the pagure API to find who has access (also, maybe
    critpath flag?)
- FMN.rules (who is maintaining the package)
  - will have to query the pagure API to find who has access
- pkgdb-admin
  - mprahl is rewriting this to use a ticket queue, somewhere.
- pkgdb-cli (here we list all the different command and their description and
  the possible solution)
    acl                 Display ACLs for a given package
        can be done, with no api keys
    give                Give package(s) according to the specified criteria
        cannot be done yet.  just return a "cannot be done yet" error.
    list                List package according to the specified criteria
        can be done, with no api keys
    orphan              Orphan package(s) according to the specified criteria
        cannot be done until "give" is done. this is just a "give" to the
        orphan user.
    unorphan            Unorphan package(s) according to the specified criteria
        cannot be done until "give" is done. this is just a "give" to another
        user.
    request             Request ACLs on package(s) according to the specified criteria
         to be bikedshed on devel about killing it. threebean says "just use
         email!"
    update              Update ACLs on package(s) as desired
          No longer needed since we don't do per branch ACLs anymore
    branches            List the active branches
          Query PDC
    pending             List the pending ACLs requests
          can easily be done by querying the pagure project for your tickets
          with a status=Open (for package/branch requests)
          for ACLs request, since we would not be tracking them down anymore,
          it would have to be done by the packagers themselves and after a
          while likely end up with a non-responsive maintainer procedure.
    monitoring          Get or Set the monitoring of a package
        can easily get with no api key.  (just http call to dist-git).
        setting it no longer allowed.
    koschei             Get or Set the koschei monitoring of a package
        can easily get with no api key.  (just http call to dist-git).
        setting it no longer allowed.

- bunch of links (long term)


I hope these notes are sufficiently clear, if not, we're happy to take any
and all questions.
I think we covered all bases and this is looking pretty straight forward.

What do you think?

Thanks for your inputs,
Pierre

Attachment: signature.asc
Description: PGP signature

_______________________________________________
infrastructure mailing list -- infrastructure@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to infrastructure-leave@xxxxxxxxxxxxxxxxxxxxxxx

[Index of Archives]     [Fedora Development]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux