3.115.0 (2026-07-21)
Note
Official changes are available on Pulp docs
REST API
Features
-
Add
/v4/API to Pulp.This adds a
/v4/API path to Pulp, in parallel to the existing/v3/path. The two
are currently (nearly) identical APIs - see the/pulp/api/v4/status/ouput for the
only (current) end-user-visible impact.This change is primarily setting the stage to allow for future API changes and growth.
It is in TECH PREVIEW, and is likely to have significant changes happening to it as we
continue integrating into the rest of the Pulp architecture.
#6462 -
Allow commas in
pulp_labelsvalues. To filter for labels containing commas, escape them
with a backslash (e.g.?pulp_label_select=key=val\,ue).
#7789 -
Optimized response time when filtering repository versions by content.
#7799 -
Added
saml2as a dependency option accompanied by theSAML_CONFIGsetting.
Bugfixes
- Fixed content app directory listing generating broken links when distribution base paths contain colons.
#6955 - Fixed
RelatedFieldrendering wrong domain in hrefs whenDOMAIN_ENABLED=True.
#7835 - Fixed
RepositoryVersion.remove_contentfailing when the queryset is derived fromself.contentand the repository version contains >= 65,535 content items. The lazy queryset was re-evaluated aftercontent_idswas already updated, causingRepositoryContententries to be left orphaned.
#7851 - Fixed a race condition when creating content with
file_urloruploadthat could result in a duplicate artifact error. - Fixed delete timeouts when removing repositories or repository versions with large numbers of PublishedArtifacts by batching bulk deletes and avoiding nested subqueries that produce poor PostgreSQL execution plans.
- Improved validation of relative paths to prevent a path traversal attack in filesystem exports. (CVE-2026-12701)
- Stopped shipping an insecure default as DJANGO_SECRET.
Improved Documentation
- Reformatted and partially rewrote the Pull-Request Walkthrough.
Removals
- Drop support for running with Django 4.
#7343
Plugin API
Features
- Added
pulp_domaintoTaskScheduleso scheduled tasks dispatch in the correct domain. Name uniqueness is now per domain.
#7829
Removals
- Made
content_idscache required with forceful migration and removed the/pulp/api/v3/datarepair/7465/endpoint. This will run a migration that could take a while if you haven't already run the datarepair endpoint.
#7466 - Deactivated dynaconf boxify. This can affect plugins that access nested settings via dot instead of subscribing.
Pulp File
Features
- Added sync optimization that skips re-syncing when the remote manifest has not changed. An
optimizeflag on the sync endpoint (defaultTrue) allows forcing a full sync when needed.
Pulp Cert Guard
No significant changes.