Promote the Pulp APIs

Proposal

https://github.com/ansible/galaxy_ng/pull/1288

Provide the pulp APIs as a supported API surface. Going forward, our supported API surface will be:

  • /api/galaxy/v3/
  • /api/galaxy/pulp/api/v3/

Why are we doing this now?

A few major changes have happened over the past few months that have made this possible.

  • The pulp apis are re-routable now, so we can provide them as an API surface on console.redhat.com
  • Pulp authentication classes are configurable, so we can provide DRF token and console dot token authentication for clients that rely on those
  • Pulp authorization classes are now fully and easily customizable, so we can provide customized RBAC configurations for pulp endpoints.

What purpose would each API endpoint serve?

/api/galaxy/v3/

Our existing APIs will primarily be used for content consumption, content specific actions and client specific operations. Some examples of this include:

  • Client specific operations:
    • Client configurations (ex: feature flags for the UI)
    • Client authentication endpoints (UI auth, token generation)
  • Content Consumption:
    • Collections search
    • EE search
    • Collection downloads
  • Content specific operations:
    • Collection deletion (abstraction on a lot of lower level pulp operations)
    • EE deletion (abstraction on a lot of lower level pulp operations)
    • Collection deprecation

/api/galaxy/pulp/api/v3/

The pulp APIs will be used for managing all pulp primitives. Example of this include:

  • General content management
    • Move, copy, sync, etc
  • Managing:
    • Repos
    • Remotes
    • Distributions
    • Groups
    • Users
    • RBAC Roles
    • Tasks

What does this mean for development?

  • Galaxy will include API endpoints under pulp/api/v3 whenever we need to create new pulp object types, such as galaxy's registry remote.
  • We will no longer provide customized API endpoints for pulp objects. Existing api endpoints such as the UI endpoints for users, groups, remotes etc. will be removed and the UI will be expected to function via the vanilla pulp APIs for these object types.
  • When improvements are needed on the pulp APIs, we will contribute them to the corresponding pulp projects instead of forking their functionality.

Next steps

  • Some pulp APIs will need to receive a few upgrades to support the UI
    • groups, users etc.
  • The API spec for the API refactor needs to be updated as some API endpoints that were going to migrate to v3 will no have to go to pulp-v3
  • Some API endpoints in galaxy_ng will need to be deprecated
    • collection sync configuration endpoint
    • collection sync endpoint
Select a repo