- Add new repo_key class attribute to Content which defaults to an empty tuple. Subclasses should use repo_key to specify the names of fields, which together should be unique per Repository. Anytime RepositoryVersion.add_content() is called, it now automatically removes content that matches the repo_key. #5008
- Add a ReadOnlyContentViewSet for plugin writers. #5535
- Setting code on ProgressBar. #5184
- PublishedMetadata.create_from_file() interface added for creating PublishedMetadata. #5304
- Add SingleArtifactContentUploadSerializer a base class for content serializers that accept uploaded files. #5403
- DeclarativeArtifacts can have an Artifact without a RemoteArtifact. #5413
- Added plugin_managed field on repository that plugins can set for repositories that should be managed by plugins and not by users. #5421
Deprecations and Removals¶
- Remove support for mysql/mariadb making postgresql the only supported database. #5129
- PublishedMetadata should no longer be created using the default constructor. #5304
- Replace ProgressBar with ProgressReport and removing ProgressSpinner. #5444
- Remove custom JSONField implementation from public API #5465
Distributions are now Master/Detail. All plugins will require updating to provide a detail Distribution. Here is an example of pulp_file introducing the FileDistribution as an example of changes to match.
Publications are now Master/Detail. Plugins that use Publications will need to provide a detail Publication. Here is an example of pulp_file introducing the FilePublisher as an example of changes to match along with its follow-on change.