Story #4785
Updated by gmbnomis over 5 years ago
h2. Description h3. 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. h3. 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@: @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@: @Distribution@ a subclass of @BaseDistribution@ Distribution containing publication, publisher, repository. This class is the "standard" Distributor that will be subclassed by plugins plugin 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.