Story #4785
closedAs a plugin writer, I have Master/Detail Distributions
100%
Description
Description¶
Problem¶
If plugin writers want to customize distributions (or use different content apps), they have to "invent" new REST endpoints (e.g. pulp_docker has a "docker-distributions" endpoint).
This leads to inconsistent API with unexpected location of distribution endpoints.
Solution¶
Switching to Master/Detail allows plugins to define customized Distribution at 'well-known' endpoints (e.g. .../distributions/docker/docker/
)
The Models offered by core will be: (see also #4715)
- BaseDistribution
: a (non-abstract) MasterModel containing name, base_path, content_guard, and remote. This class can be used in plugins that don't use publications
- Distribution
: a subclass of BaseDistribution
containing publication, publisher, repository. This class is the "standard" Distributor that will be subclassed by plugins using the standard content app
We will have the Master/Detail Distribution viewset overridden by the plugin. For convenience, plugin writers should not be forced to redefine the create/update/remove async tasks, i.e. they should create the respective detail model instance.
pulpcore db migrations will have to be re-generated for this change; users will have to redo their data bases. (this is necessary for rc2 anyway (because of #4678))
Optional: If possible, the current .../distributions/
endpoint should still work. It will be deprecated in rc2 and removed in rc3.
Related issues
Switch to Master/Detail Distribution
and update the outdated parts of the README.
Required PR: https://github.com/pulp/pulpcore/pull/117 Required PR: https://github.com/pulp/pulpcore-plugin/pull/95 Required PR: https://github.com/PulpQE/pulp-smash/pull/1205
ref #4785 https://pulp.plan.io/issues/4785