Skip to content

Changelog

3.69.0 (2024-12-11)

REST API

Features

  • Added core version to the bindings api spec even if core apis are not part of the spec.

Bugfixes

  • Fixed content-app behavior for the case where the client would get a 200 response for a package streamed from a Remote which did not match the expected checksum. Now, the connection is closed before finalizing the response. #5012
  • On a request for on-demand content in the content app, a corrupted Remote that contains the wrong binary (for that content) prevented other Remotes from being attempted on future requests. Now the last failed Remotes are temporarily ignored and others may be picked. #5725
  • Disable retry logic on the context of content-app on-demand streaming, as we can't recover from any errors after starting the streaming process (chunked transfer). #5937
  • Allowed to bind api and content workers to multiple addresses. You can specify --bind multiple times on the pulpcore-{api,content} entrypoints. #6053
  • Fixed the openapi schema definition of task error.
  • Fixed the schema definition for created resources.

Improved Documentation

  • Added docs about on-demand content limitations and caveats. #1975, #3212

Plugin API

Features

  • Pulpcore migrations have been squashed. In order to allow removing the old ones, plugins should rebase their migrations on at least the 0091 migration of core. The pulpcore-manager rebasemigrations command will hep with that.

Bugfixes

Misc

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.68.2 (2024-12-11)

REST API

No significant changes.

Plugin API

Bugfixes

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.68.1 (2024-11-26)

REST API

Bugfixes

  • Fixed content-app behavior for the case where the client would get a 200 response for a package streamed from a Remote which did not match the expected checksum. Now, the connection is closed before finalizing the response. #5012
  • Allowed to bind api and content workers to multiple addresses. You can specify --bind multiple times on the pulpcore-{api,content} entrypoints. #6053

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.68.0 (2024-11-12)

REST API

Bugfixes

  • Fixed an assertion on all content being added/removed in a repository version is of the same domain. #content-assert
  • Fixed incorrect count of waiting tasks in the queue for the tasks_unblocked_queue and tasks_longest_unblocked_time metrics. #5941
  • On the content-app, added ClientConnectionError (aiohttp) as an exception that can trigger a retry when streaming content from a Remote. #5967

Plugin API

Features

  • Added pulpcore.app.util.cache_key to the plugin api. Use this method to get the base-key when using the Pulp cache. #cache-key

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.67.1 (2024-11-12)

REST API

Bugfixes

  • Fixed an assertion on all content being added/removed in a repository version is of the same domain. #content-assert

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.67.0 (2024-11-06)

REST API

Features

  • Added DefaultAccessPolicy that will always use the default policy declared on the views. Added AccessPolicyFromSettings that will read policies from the ACCESS_POLICIES setting first. #5882
  • Replaced built-in opentelemetry metrics with custom middlewares. Additionally, introduced a new setting OTEL_ENABLED that toggles the opentelemetry instrumentation on and off. It defaults to False. #5943

Bugfixes

  • pass envvars to Signing Scripts to access GNUPGHOME #5911
  • Fixed repository modify allowing content from separate domains. #5934
  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Improved Documentation

  • Fixed pulpcore code-api generated docs, which was not using the right mkdocstring directives yet. #5834

Plugin API

Bugfixes

  • Downloaders now always ensure the download ends up under WORKING_DIRECTORY. #5912

Removals

  • Deprecated AccessPolicyFromDB for removal in 4.0. #5822

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.66.1 (2024-11-06)

REST API

Bugfixes

  • Fixed repository modify allowing content from separate domains. #5934
  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.66.0 (2024-10-16)

REST API

Features

  • Added OpenPGP keyring repository type and OpenPGP key content type. #3024
  • Re-enabled and refactored the Domain Storage metric emitter. #5762
  • Added a formal "immediate" type of Task and changed workers behavior to prioritize those. This labeling is exlusive to plugin code and should only be applied where it's known that the task will finish shortly, like in updates of repositories, remotes, and distributions. #5767

Bugfixes

  • Fixed task purge to not expect a user, when a run has been scheduled by Pulp itself. #5881

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.65.0 (2024-10-08)

REST API

Bugfixes

  • pulp-worker fails to start with "float object cannot be interpreted as an integer" on some versions of python. #5861
  • Fixed the name of the metrics' attribute reporting the worker's process name. Started emitting the name of the Pulp service with a dedicated label (i.e., job=pulp-api). #5864
  • Started propagating headers from the content-app when using a non-default filesystem storage. #5879

Improved Documentation

  • Correct rendering of pulp bash example in reclaim-disk-space.md #5876

Plugin API

No significant changes.

Pulp File

Bugfixes

  • During sync, quote the URL path for file downloads using HTTP. #5686

Pulp Cert Guard

No significant changes.


3.64.0 (2024-10-03)

REST API

Features

  • Started using an upstream version of the OpenTelemetry aiohttp server instrumentation. #5833
  • Included the worker's name in the http.server.duration OpenTelemetry metric attributes. #5844

Bugfixes

  • Started collecting artifact size metrics even after caching the served content. #5817

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.63.7 (2025-01-08)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.63.6 (2024-12-13)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.63.5 (2024-12-11)

REST API

No significant changes.

Plugin API

Bugfixes

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.63.4 (2024-11-26)

REST API

Bugfixes

  • Fixed content-app behavior for the case where the client would get a 200 response for a package streamed from a Remote which did not match the expected checksum. Now, the connection is closed before finalizing the response. #5012
  • Allowed to bind api and content workers to multiple addresses. You can specify --bind multiple times on the pulpcore-{api,content} entrypoints. #6053

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.63.3 (2024-11-20)

REST API

Bugfixes

  • Fixed incorrect count of waiting tasks in the queue for the tasks_unblocked_queue and tasks_longest_unblocked_time metrics. #5941

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.63.2 (2024-11-12)

REST API

Bugfixes

  • Fixed an assertion on all content being added/removed in a repository version is of the same domain. #content-assert
  • pulp-worker fails to start with "float object cannot be interpreted as an integer" on some versions of python. #5861
  • Started propagating headers from the content-app when using a non-default filesystem storage. #5879
  • Fixed task purge to not expect a user, when a run has been scheduled by Pulp itself. #5881
  • pass envvars to Signing Scripts to access GNUPGHOME #5911
  • On the content-app, added ClientConnectionError (aiohttp) as an exception that can trigger a retry when streaming content from a Remote. #5967

Plugin API

No significant changes.

Pulp File

Bugfixes

  • During sync, quote the URL path for file downloads using HTTP. #5686

Pulp Cert Guard

No significant changes.


3.63.1 (2024-10-30)

REST API

Bugfixes

  • Fixed repository modify allowing content from separate domains. #5934
  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.63.0 (2024-10-01)

REST API

Features

  • Introduced new immutable resource identifier: Pulp Resource Name (PRN). All objects within Pulp will now show their PRN alongside their pulp_href. The PRN can be used in lieu of the pulp_href in API calls when creating or filtering objects. The PRN of any object has the form of prn:app_label.model_label:pulp_id. #5766

Bugfixes

  • Removed opentelemetry-instrumentation-django from dependencies. #5843
  • Made Kafka dependencies optional depending on whether the producer is configured. #5850

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.62.0 (2024-09-25)

REST API

Features

  • Added name, base_url and last_replication filters for UpstreamPulps. #4110
  • Added new setting API_ROOT_REWRITE_HEADER that when specified allows the API_ROOT to be rewritten per request based on the header's value. #4207
  • Added new q_select field to UpstreamPulp to allow for more advanced filtering on upstream distributions. pulp_label_select has been removed and its values have been migrated to this new field. Please upgrade every API worker before issuing a new replicate task to avoid unwanted behavior. #5087

Bugfixes

  • Fixed Publication & RepositoryVersion's content__in filter to properly accept an array of strings. #3634

Improved Documentation

  • Document the environment variables used in the test fixture bindings_cfg. #5807

Plugin API

Features

  • Added new reverse method that handles Pulp specific url formatting. Plugins should update instances of django.urls.reverse and rest_framework.reverse to this new Pulp one. #4207

Deprecations

  • Deprecated Replicator's distribution_data, plugins should switch to distribution_extra_fields. distribution_data will be removed in pulpcore==3.70. #3649

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.61.0 (2024-09-18)

REST API

Features

  • Added new /migrate/ endpoint to Domains that allows for migrating artifacts from one storage backend to another. #3358

Bugfixes

  • Fix a memory spike on deletion of large repositories. #5048
  • Fixed a logging issue, when a task marked for cancelling that finished produced an unecessary stack trace.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.60.0 (2024-09-10)

REST API

Features

  • Added metrics reporting the size of served artifacts. #4602
  • Pulp-workers now also log domain name in which the task is executed. #5693

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.59.0 (2024-08-28)

REST API

Features

  • Added ability to cancel all tasks in a TaskGroup through a partial update with state=canceled. #4125

Bugfixes

  • Added a default access policy where only admin users will be able to upload and read/list artifacts. #5525

Improved Documentation

  • Improved documentation for the complex filtering. #5703

Deprecations

  • The DELETE request method from Artifact viewset has been deprecated and planned for removal. #5525

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.58.0 (2024-08-14)

REST API

Features

  • Optimized replication to skip content syncing when upstream distributions are unchanged. The optimization considers changes on the upstream distributions serving content directly from a publication or repository version. #5493
  • Exposed the no_content_change_since field on the Distribution API endpoint to return a timestamp since when the distributed content served by a distribution has not changed. If the value equals to null, no such a guarantee about the content change is given. #5687

Bugfixes

  • Fixed RBAC permissions being incorrectly assigned in tasks that create objects. https://access.redhat.com/security/cve/cve-2024-7143 #5683

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.57.1 (2024-08-10)

REST API

Bugfixes

  • Fixed RBAC permissions being incorrectly assigned in tasks that create objects. https://access.redhat.com/security/cve/cve-2024-7143 #5683

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.57.0 (2024-08-07)

REST API

Features

  • Added the ability to save task's diagnostics data as artifacts. These artifacts are available at the task's detail endpoint. To download them, issue a GET request to ${TASK_HREF}profile_artifacts/. The artifacts are cleaned up automatically by the orphan cleanup. #5422
  • Improved performance when handling tasks by deferred loading of encrypted args. This also allows seeing and purging tasks in case the symmetric db key was lost.

Bugfixes

  • Implemented batching for artifact deletion to handle the reclaim space task for large repositories. #5635
  • Fixed urlizing of api hrefs in clickable api. #5664

Improved Documentation

  • Updated REMOTE-USER header definition (to use hyphen, instead of underscore) due to gunicorn version update blocking its usage for security purposes. #5478

Plugin API

Bugfixes

  • Change field name url to file_url on UploadSerializerFieldsMixin to avoid conflicting fields in plugins. #5633

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.56.1 (2024-07-26)

REST API

No significant changes.

Plugin API

Bugfixes

  • Change field name url to file_url on UploadSerializerFieldsMixin to avoid conflicting fields in plugins. #5633

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.56.0 (2024-07-23)

REST API

Features

  • Added kafka integration (tech-preview). #5337
  • Added RBAC for TaskGroups API. #5497

Bugfixes

  • Fixed path title at content directory index to include domain's name when enabled. #4253
  • Fixed content upload for existing on-demand content not properly storing the new artifact. #5501
  • Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set. #5510
  • Added a note about the default value of the SECRET_KEY setting. #5529
  • Browsable HREFs now have clickable links again. #5563
  • Fixed a bug in has_repo_or_repo_ver_param_model_or_obj_perms function to make it work with plugin Repositories. #5619

Plugin API

Features

  • Added new url field to UploadSerializerFieldsMixin that will download the file used for the content upload task. #4608

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.55.3 (2024-07-23)

REST API

Bugfixes

  • Fixed a bug in has_repo_or_repo_ver_param_model_or_obj_perms function to make it work with plugin Repositories. #5619

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.55.2 (2024-07-16)

REST API

Bugfixes

  • Browsable HREFs now have clickable links again. #5563

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.55.1 (2024-06-24)

REST API

Bugfixes

  • Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set. #5510

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.55.0 (2024-06-18)

REST API

Features

  • Added two new metrics related to Tasks: pulp_tasks_unblocked_waiting_queue has the number of unblocked waiting tasks that have been waiting longer than five(5) seconds, while pulp_tasks_longest_unblocked_waiting_time record the time in seconds of the longest waiting time for a task in the queue. #3821
  • Added indices to object_id on user and group roles tables. #5369
  • Add pulpcore-manager openapi command to help generate api.json for bindings. #5462

Bugfixes

  • Added Pulp side batching to fix large exports that were failing due to changes in psycopg. #5375
  • Added a lock to avoid multiple workers sending metrics at the same time. #5442
  • Pulpcore no longer assumes that every plugin implementing the Replication feature supports Publications. #5464

Removals

  • Removed pulp_hrefs from task reserved resources record. Task resource locking will now use Pulp Resource Names (PRNs) that are immutable with respect to settings changes. A resource's pulp_href can still be used in task's reserved_resources filter, Pulp will convert it to the new format behind the scenes. #5148
  • Removed task's reserved_resources_record filter. Please use reserved_resources instead. #5415
  • Removed deprecated plugin query string parameter from api doc endpoint. Please use a list of app labels with the component parameter instead.
  • Upgrade the version of drf spectacular to 0.27.2.

Misc

Plugin API

Removals

  • Removed deprecated functional test fixtures for api clients. The new pulpcore_bindings, file_bindings, ... fixtures should be used instead. #5417

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.54.1 (2024-06-18)

REST API

Bugfixes

  • Pulpcore no longer assumes that every plugin implementing the Replication feature supports Publications. #5464

Misc

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.54.0 (2024-05-22)

REST API

Features

  • Added search indices to the Task table to speed up task operations. #5367
  • Added a scheduled version of task purge. You need to adjust the "TASK_PROTECTION_TIME" setting in order to use it. #5378

Bugfixes

  • Renamed name to domain_name in the metric's attributes reporting domain's disk usage. #5134
  • Fixed content directory listing returning 500 in certain scenarios due to missing artifact sizes. #5318
  • Fixed a bug related to replication of AppStream and BaseOS repositories of CentOS. #5358
  • Stopped deleting content and artifacts presumably created by later failed or canceled tasks. Deleting these lies solely in the responsibility of orphan cleanup. #5363

Improved Documentation

  • Made the complex filtering feature production-ready. This feature supports a special q filter that allows combinations of other filters with NOT, AND and OR operations. #5319

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.53.0 (2024-04-30)

REST API

Features

  • Added integration with Sentry/GlitchTip. #5285

Bugfixes

  • Update jquery version from 3.5.1 to 3.7.1 in API.html template #5306

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.52.0 (2024-04-23)

REST API

Features

  • Added a Liveness API that can be used for the livenessProbe in k8s. #5243

Bugfixes

  • Fixed bug where Last-Modified header of packages in django-storages was being updated on duplicate uploads. #5149
  • Fixed bug which prevented the Pulp API usaging from a web browser #5250

Misc

-

Plugin API

Bugfixes

  • Fixed a bug where models with auto assign permissions failed when no viewset was attached. #5267

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.51.3 (2024-04-23)

REST API

Bugfixes

  • Fixed bug which prevented the Pulp API usaging from a web browser #5250

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.51.2 (2024-04-17)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.51.1 (2024-04-17)

REST API

No significant changes.

Plugin API

Bugfixes

  • Fixed a bug where models with auto assign permissions failed when no viewset was attached. #5267

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.51.0 (2024-04-16)

REST API

Features

  • Add a new SecurityScheme for external authentication in the OpenAPI schema. #5179

Bugfixes

  • Fix Upload failing to run post create hooks. On installations using the default access policy, this fixes the automatic owner assignment for users with the core.upload_create role on upload objects. #5199
  • Catch any DatabaseError, not only OperationalError to trigger reconnect to the database #5259

Misc

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.50.3 (2024-04-16)

REST API

Bugfixes

  • Fix Upload failing to run post create hooks. On installations using the default access policy, this fixes the automatic owner assignment for users with the core.upload_create role on upload objects. #5199
  • Catch any DatabaseError, not only OperationalError to trigger reconnect to the database #5259

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.50.2 (2024-04-09)

REST API

Misc

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.50.1 (2024-04-03)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.50.0 (2024-03-26)

REST API

Bugfixes

  • Fixed an issue in replicate, where an existing distribution had a conflicting publication set. #4637
  • Fixed content directory listing not showing file size for 0-byte files. #5100

Deprecations

  • Task filter reserved_resources_record has been deprecated and planned for removal in pulpcore 3.55. #4315

Misc

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.30 (2025-01-08)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.29 (2024-12-18)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.28 (2024-12-13)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.27 (2024-12-07)

REST API

No significant changes.

Plugin API

Bugfixes

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.26 (2024-11-29)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.25 (2024-11-26)

REST API

Bugfixes

  • Fixed content-app behavior for the case where the client would get a 200 response for a package streamed from a Remote which did not match the expected checksum. Now, the connection is closed before finalizing the response. #5012
  • Fixed content directory listing returning 500 in certain scenarios due to missing artifact sizes. #5318
  • Allowed to bind api and content workers to multiple addresses. You can specify --bind multiple times on the pulpcore-{api,content} entrypoints. #6053

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.24 (2024-11-12)

REST API

Bugfixes

  • Fixed an assertion on all content being added/removed in a repository version is of the same domain. #content-assert
  • On the content-app, added ClientConnectionError (aiohttp) as an exception that can trigger a retry when streaming content from a Remote. #5967

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.23 (2024-11-06)

REST API

Bugfixes

  • Fixed repository modify allowing content from separate domains. #5934
  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Plugin API

Bugfixes

  • Downloaders now always ensure the download ends up under WORKING_DIRECTORY. #5912

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.22 (2024-10-17)

REST API

Bugfixes

  • pass envvars to Signing Scripts to access GNUPGHOME #5911

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.21 (2024-10-09)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.20 (2024-09-18)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.19 (2024-09-03)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.18 (2024-08-28)

REST API

Bugfixes

  • Fixed urlizing of api hrefs in clickable api. #5664

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.17 (2024-08-10)

REST API

Bugfixes

  • Fixed RBAC permissions being incorrectly assigned in tasks that create objects. https://access.redhat.com/security/cve/cve-2024-7143 #5683

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.16 (2024-08-06)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.15 (2024-07-23)

REST API

Bugfixes

  • Fixed a bug in has_repo_or_repo_ver_param_model_or_obj_perms function to make it work with plugin Repositories. #5619

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.14 (2024-07-16)

REST API

Bugfixes

  • Browsable HREFs now have clickable links again. #5563

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.13 (2024-07-02)

REST API

Bugfixes

  • Update jquery version from 3.5.1 to 3.7.1 in API.html template #5306

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.12 (2024-06-24)

REST API

Bugfixes

  • Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set. #5510

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.11 (2024-06-18)

REST API

Bugfixes

  • Pulpcore no longer assumes that every plugin implementing the Replication feature supports Publications. #5464

Misc

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.10 (2024-05-23)

REST API

Bugfixes

  • Added Pulp side batching to fix large exports that were failing due to changes in psycopg. #5375

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.9 (2024-05-22)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.8 (2024-05-16)

REST API

Bugfixes

  • Stopped deleting content and artifacts presumably created by later failed or canceled tasks. Deleting these lies solely in the responsibility of orphan cleanup. #5363

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.7 (2024-05-07)

REST API

Bugfixes

  • Fixed bug which prevented the Pulp API usaging from a web browser #5250

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.6 (2024-04-30)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.5 (2024-04-17)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.4 (2024-04-16)

REST API

Bugfixes

  • Catch any DatabaseError, not only OperationalError to trigger reconnect to the database #5259

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.3 (2024-03-27)

REST API

Bugfixes

  • Fix import in wsgi preventing startup. #5189

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.2 (2024-03-26)

REST API

Bugfixes

  • Fixed an issue in replicate, where an existing distribution had a conflicting publication set. #4637

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.1 (2024-03-19)

REST API

Bugfixes

  • Fixed content directory listing not showing file size for 0-byte files. #5100

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.49.0 (2024-03-05)

REST API

No significant changes.

Plugin API

Features

  • Added NoArtifactContentViewSet for content creation that does not require a file to be uploaded. #5086

Pulp File

Misc

Pulp Cert Guard

Misc


3.48.0 (2024-02-28)

REST API

Features

  • Added a serializer to output pulp_last_updated field on pulp resources. #5033
  • Added unblocked_at to tasks to distingish waiting for other resources from waiting for a free worker. #5057

Bugfixes

  • Fixed a theoretical race condition leading to improper locking when dispatching tasks. #5071

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.47.0 (2024-02-22)

REST API

Features

  • Started emitting metrics that report disk usage within a domain. The metrics are sent to the collector every 60 seconds. The interval can be adjusted with the OTEL_METRIC_EXPORT_INTERVAL environemnt variable. #4603

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.46.0 (2024-02-13)

REST API

Bugfixes

  • Taught downloader to trust system-cert-store on HTTPS proxy connections. #3036
  • Fixed a warning that gets raised when cache is enabled: RuntimeWarning: coroutine 'AsyncCache.delete' was never awaited. #4967
  • Added a serializer validation for domain names with more than 50 characters. #4976

Misc

Plugin API

Features

  • Exposed TimeoutException to plugin writers. #5024

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.45.4 (2024-03-26)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.45.3 (2024-03-05)

REST API

No significant changes.

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.45.2 (2024-02-13)

REST API

Misc

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.45.1 (2024-01-30)

REST API

Bugfixes

  • Fixed a warning that gets raised when cache is enabled: RuntimeWarning: coroutine 'AsyncCache.delete' was never awaited. #4967

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.45.0 (2024-01-24)

REST API

Features

  • Added orphaned_for filters to artifact and content endpoints to filter content that has been orphaned for a given number of minutes. #3364
  • Added pulp-certguard as a resident plugin. #4626

Bugfixes

  • Fixed a bug where publications couldn't be created from repository versions when using RBAC. #4932

Plugin API

No significant changes.

Pulp File

No significant changes.

Pulp Cert Guard

No significant changes.


3.44.1 (2024-01-17)

REST API

Bugfixes

  • Fixed a bug where publications couldn't be created from repository versions when using RBAC. #4932

Plugin API

No significant changes.

Pulp File

No significant changes.


3.44.0 (2024-01-16)

REST API

Features

  • Added "module" to status api. #4728
  • Enabled the gunicorn applications for pulpcore-api and pulpcore-content to load configurations from the "gunicorn.conf.py" file. #4917

Bugfixes

  • Repo versions are now protected from deletion if they are being used by Pulp to distribute content. Users must first update any necessary distributions before deleting a protected repo version. #2705
  • Fixed a bug in the repository version repair API for non-default domains. #4776, #4806
  • Fix a bug in import/export that could result in a division-by-zero during import. #4777
  • Ensure the Redis cache is actually respecting the TTL. #4845
  • Fixed an issue with importing async-timeout in Python 3.11. #4923
  • Fixed RBAC related bug where syncing a repository with a predefined remote required specifying the remote's HREF at sync time. #4925

Removals

  • The python package for the file plugin is now correctly reporting as "pulpcore". #4728

Deprecations

  • Deprecated the query parameter plugin on the api doc endpoint in favor of component. #4728

Misc

Plugin API

No significant changes.

Pulp File

No significant changes.


3.43.3 (2024-01-16)

REST API

Bugfixes

  • Fixed an issue with importing async-timeout in Python 3.11. #4923

Plugin API

No significant changes.

Pulp File

No significant changes.


3.43.2 (2024-01-09)

REST API

Bugfixes

  • Fix a bug in import/export that could result in a division-by-zero during import. #4777

Plugin API

No significant changes.

Pulp File

No significant changes.


3.43.1 (2023-12-12)

REST API

Bugfixes

  • Fixed a bug in the repository version repair API for non-default domains. #4776, #4806

Plugin API

No significant changes.

Pulp File

No significant changes.


3.43.0 (2023-12-05)

REST API

Features

  • Added a CompositeContentGuard, that manages a list-of ContentGuards and permits access to content if ANY guard permits. #4583

Bugfixes

  • Removed a race condition leading to 500 error in distribution filtering. #4766
  • Added missing database indices to the RemoteArtifact model. #4835

Plugin API

Features

  • Added the async safe detail_model property to master detail models. #4766

Pulp File

No significant changes.


3.42.0 (2023-11-28)

REST API

Features

  • Added instrumentation to content-app to track telemetry data. #3829

Bugfixes

  • Fixed that pulp_file presented its python_package as pulp_file instead of pulp-file. #4724

Plugin API

No significant changes.

Pulp File

No significant changes.

3.41.1 (2023-11-21)

REST API

Bugfixes

  • Fixed that pulp_file presented its python_package as pulp_file instead of pulp-file. #4724

Plugin API

No significant changes.

Pulp File

No significant changes.

3.41.0 (2023-11-14)

REST API

Features

  • Added a --restart option to pulpcore worker. This requires "hupper" to be installed.
  • Added new management command repository-size that calculates the total size in bytes of files stored in repositories. #2079

Bugfixes

  • Closed the window when serializer.get_or_create could raise ObjectDoesnotExist. #4648
  • Restored the ability to set --max-requests-jitter on service entrypoints. #4679
  • Fix syncs deleting the original files. #4681

Plugin API

Features

  • Exposed a function to return a batch from a given queryset at pulpcore.plugin.util.batch_qs. #4607
  • Added content app feature to accept a ContentArtifact from content_handler so that the plugin writer no longer has to generate a response when dealing with ContentArtifacts. #4635

Bugfixes

  • Added ADD_TRAILING_SLASH property to AsyncContentCache. The default value is True. By default, AsyncContentCache will call into Handler._match_distribution(path, add_trailing_slash=True). If the meaning of the Distribution's base_path changes when a trailing slash is added, this method will not match such a Distribution. In this case, AsyncContentCache.ADD_TRAILING_SLASH should be set to False. #4634
  • Fixed how Distribution.content_handler() is called in the content app. #4644
  • Fixed content app returning 404s on directory index pages for some published plugins. #4654

Removals

  • Removed the ability to call functions defined outside of pulp components as the target of a task. #4651

Pulp File

Bugfixes

  • Fix pulp_file advertised version. #4633

3.40.4 (2023-11-08)

REST API

Bugfixes

  • Restored the ability to set --max-requests-jitter on service entrypoints. #4679

Plugin API

No significant changes.

Pulp File

No significant changes.

3.40.3 (2023-11-07)

REST API

Bugfixes

  • Closed the window when serializer.get_or_create could raise ObjectDoesnotExist. #4648

Plugin API

No significant changes.

Pulp File

No significant changes.

3.40.2 (2023-11-06)

REST API

No significant changes.

Plugin API

Bugfixes

  • Fixed content app returning 404s on directory index pages for some published plugins. #4654

Pulp File

No significant changes.

3.40.1 (2023-11-02)

REST API

No significant changes.

Plugin API

Bugfixes

  • Added ADD_TRAILING_SLASH property to AsyncContentCache. The default value is True. By default, AsyncContentCache will call into Handler._match_distribution(path, add_trailing_slash=True). If the meaning of the Distribution's base_path changes when a trailing slash is added, this method will not match such a Distribution. In this case, AsyncContentCache.ADD_TRAILING_SLASH should be set to False. #4634
  • Fixed how Distribution.content_handler() is called in the content app. #4644

Pulp File

Bugfixes

  • Fix pulp_file advertised version. #4633

3.40.0 (2023-10-31)

REST API

Features

  • The content app now returns a 301 redirect when a requested path does not end in a / but should end in a /. #3173
  • Added upload field to no artifact content upload apis. #4348
  • Added pulp_file as a resident plugin. #4550

Removals

  • Removed fallback to eval in case EncryptedJSONField failed to decode json data. In case you suspect bad entries in the database, run pulpcore-manager rotate-db-key before the upgrade. #4383
  • Removed old unencrypted task arguments from database. #4546

Plugin API

Features

  • Handler._match_distribution() method now accepts add_trailing_slash keyword argument. When set to False, the content app will not try to append a '/' to the path before trying to match it to a distribution. Plugin code that calls this method directly needs to be updated to account for the desired behavior. #3459

Removals

  • The changes introduced to the content upload serializers need adjustments in dome plugins. Specifically plugin that implemented their own notion of deferred validation to NoArtifactContentUploadSerializer seem to be affected. #4348

Pulp File

Features

  • Starting from this release pulp_file will be shipped as part of the pulpcore package. #4550

3.39.25 (2025-01-08)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.24 (2024-11-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.23 (2024-11-12)

REST API

Bugfixes

  • On the content-app, added ClientConnectionError (aiohttp) as an exception that can trigger a retry when streaming content from a Remote. #5967

Plugin API

No significant changes.


3.39.22 (2024-11-06)

REST API

Bugfixes

  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Plugin API

No significant changes.


3.39.21 (2024-09-16)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.20 (2024-08-10)

REST API

Bugfixes

  • Fixed RBAC permissions being incorrectly assigned in tasks that create objects. https://access.redhat.com/security/cve/cve-2024-7143 #5683

Plugin API

No significant changes.


3.39.19 (2024-07-23)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.18 (2024-07-16)

REST API

Bugfixes

  • Browsable HREFs now have clickable links again. #5563

Plugin API

No significant changes.


3.39.17 (2024-06-24)

REST API

Bugfixes

  • Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set. #5510

Plugin API

No significant changes.


3.39.16 (2024-06-18)

REST API

Misc

Plugin API

No significant changes.


3.39.15 (2024-05-23)

REST API

Bugfixes

  • Added Pulp side batching to fix large exports that were failing due to changes in psycopg. #5375

Plugin API

No significant changes.


3.39.14 (2024-05-16)

REST API

Bugfixes

  • Stopped deleting content and artifacts presumably created by later failed or canceled tasks. Deleting these lies solely in the responsibility of orphan cleanup. #5363

Plugin API

No significant changes.


3.39.13 (2024-04-17)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.12 (2024-03-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.11 (2024-03-05)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.10 (2024-02-13)

REST API

Misc

Plugin API

No significant changes.


3.39.9 (2024-01-30)

REST API

Bugfixes

  • Fixed a warning that gets raised when cache is enabled: RuntimeWarning: coroutine 'AsyncCache.delete' was never awaited. #4967

Plugin API

No significant changes.


3.39.8 (2024-01-25)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.7 (2024-01-24)

REST API

Bugfixes

  • Taught downloader to trust system-cert-store on HTTPS proxy connections. #3036

Plugin API

No significant changes.


3.39.6 (2024-01-16)

REST API

Bugfixes

  • Fixed an issue with importing async-timeout in Python 3.11. #4923

Plugin API

No significant changes.


3.39.5 (2024-01-09)

REST API

No significant changes.

Plugin API

No significant changes.


3.39.4 (2023-12-14)

REST API

Bugfixes

  • Fix a bug in import/export that could result in a division-by-zero during import. #4777

Plugin API

No significant changes.


3.39.3 (2023-11-15)

REST API

Bugfixes

  • Fix syncs deleting the original files. #4681

Plugin API

No significant changes.

3.39.2 (2023-11-08)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591
  • Restored the ability to set --max-requests-jitter on service entrypoints. #4679

Plugin API

No significant changes.

3.39.1 (2023-10-31)

REST API

No significant changes.

Plugin API

No significant changes.

3.39.0 (2023-10-25)

REST API

Features

  • Added a HeaderContentGuard to allow a content access based on a valued provided by a specific header. The header can optionally be filtered through a jq expression. #4518

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.38.1 (2023-10-28)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.38.0 (2023-10-19)

REST API

Features

  • Use CRC32 checksums instead of SHA256 to improve import/export performance. Cryptographic checksums aren't required as we are only verifying the integrity of the files. #4447
  • Parsing of the db encryption key was made resiliant to whitespace and to allow comments. #4542

Bugfixes

  • Stopped reassembling the tarball of a chunked import into one large file, and instead gather the bits on the fly. This also allows importing directly from a read-only medium. #4545
  • Improve performance during export operations. #4551
  • Taught ContentArtifactResource import to cache content results to improve performance. #4564

Misc

Plugin API

No significant changes.

3.37.0 (2023-10-05)

REST API

Features

  • Include social_django urls based on config option #4511

Bugfixes

  • Added format param to DEFAULT_FILTERS in BaseFilterSet to fix django api format. #4450

Plugin API

No significant changes.

3.36.0 (2023-09-27)

REST API

Features

  • Status endpoint now reports storage usage of the domain being called from. #4456
  • Status endpoint now reports the storage usage for non-filesystem storage backends. #4457

Bugfixes

  • Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port numbers and their reuse while in time_wait state. #4452
  • Fixed the return value of get_users_with_perms_attached_roles to give proper role names. #4478

Removals

  • Exports now take place in .tar format rather than .tar.gz. It was previously found that the compression provided little benefit but came with large runtime costs, so the compression level was reduced to 0. However even packaging the data in a gzip archive without compression comes with performance costs (particularly on import), so, we remove that layer entirely. #4446

Plugin API

No significant changes.

3.35.0 (2023-09-20)

REST API

Features

  • Added RBAC for UpstreamPulp APIs. #3994
  • Added filters name__regex and name__iregex to various endpoints. #4432
  • Enabling the TASK_DIAGNOSTICS option now additionally creates a profile of all executed tasks if the pyinstrument package is installed. This incurs a small overhead on task runtime (5-10%). #4436

Bugfixes

  • Added encryption to task argument fields.
  • Fixed sync not deleting temporary files when WORKING_DIRECTORY is not a sub-directory of MEDIA_ROOT or when using a non-filesystem storage backend. #1936
  • Ensure non-chunked exports and chunked exports use the same compression level. #4411
  • Removed compression from exports (using gzip level 0). For most users of export functionality it seems to be a poor tradeoff. #4434
  • Fixed bug where supplying an empty list for pulp_href__in or pulp_id__in would return all results instead of none. #4437

Removals

  • Removed the pulp-content script that was superseeded by pulpcore-content.

Plugin API

No significant changes.

3.34.0 (2023-09-12)

REST API

Bugfixes

  • Added missing --preload option to pulpcore-api and pulpcore-content. #4368
  • Ensured that repository and remote delete is always executed in a task. This fixes a bug when the deletion blocks the gunicorn api worker for too long. #4372

Plugin API

Features

  • Added a LabelsMixin for views to allow syncronous manipulation of labels on existing objects. Repository, remote and distribution views inherit this from pulpcore, but default access policies need to be adjusted. #3332
  • Added a migration operation RequireVersion that refuses to complete as long as active server components exist in the database. #3401

3.33.0 (2023-09-06)

REST API

Features

  • Added a filter q that supports complex filter expressions.

    This feature is in tech-preview for the time being. #2480, #3914

  • Add status records for api apps. #3175

  • Added set_label and unset_label endpoints to allow manipulating individual labels synchronously. #3332

  • Added --burst flag to pulpcore-worker so it will terminate instead of sleeping. #4341

Bugfixes

  • Fixed an exception that gets raised inside the domain delete hook when there are still repositories with content in the domain. #4157
  • Made orphan clean up more tolerant when other tasks are running in parallel. #4316
  • Fix the label migration 0104 to allow upgrading from before 3.25. #4319
  • Fixed Distribution validation for PUT calls when the data source changes. #4324
  • Ensure the compression level is reliably set properly as per #3869. #4351
  • Fix encrypted fields to use json instead of repr/eval and make them fit for bulk_update. This solves an issue with pulpcore-manager rotate-db-key corrupting data. #4359

Removals

  • Starting with this release, it is highly recommended to start the api and content processes by the newly provided entrypoints (pulpcore-api and pulpcore-content) instead of calling gunicorn directly. #3175

Plugin API

Features

  • Added a LabelsMixin for views to allow syncronous manipulation of labels on existing objects. Repository, remote and distribution views inherit this from pulpcore, but default access policies need to be adjusted. #3332

3.32.1 (2023-09-06)

REST API

Bugfixes

  • Ensure the compression level is reliably set properly as per #3869. #4351
  • Fix encrypted fields to use json instead of repr/eval and make them fit for bulk_update. This solves an issue with pulpcore-manager rotate-db-key corrupting data. #4359

Plugin API

No significant changes.

3.32.0 (2023-08-22)

REST API

Bugfixes

  • Improved the performance when looking up content for repository versions. #3969
  • Fixed bug where incorrect error message presented in relation to content-import #4294

Plugin API

Features

  • Made the current domain a shared resource for all tasks even with domains disabled, so tasks can hold off all other operations by taking an exclusive lock on the (default) domain. #4285

3.31.0 (2023-08-15)

REST API

Bugfixes

  • Optimized content app to not slow down as the size of a repository grows. #3802
  • Fixed FileDownloader in the presence of on_demand remotes. #4019
  • Taught downloader to correctly handle plugin-specified headers for object-storage backends. #4028

Plugin API

Features

  • Added memoized system_id function to the plugin api. #4276

3.30.0 (2023-08-08)

REST API

Bugfixes

  • Resolved a memory leak that could occur while making large repeated queries against the API service. #2250

  • Made reclaim space task more tolerant in the face of artifact shared between two content units. #3610

  • Fixed a bug with the replicate API not handling Upstream Pulp API over HTTPS. #3910

  • Fixed duplicate OpenAPI operation ids when using domains. #3977

  • Updates file system exporter to correctly account the start_repository_version for pass_through publications #4051

  • Taught pulp-import to be able to use a subset of available worker-threads. #4068

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

  • Taught repair task to be tolerant in the face of any artifact download failure. #4111

  • Fixed a 500 error for Upstream Pulp Replicate API when domains are enabled. #4119

  • Fixed the OpenAPI schema for the 'replicate' operation response. #4121

  • Fixed a bug where repositories were getting deleted accross domains. #4158

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

  • Fixed bug where the Task Group for replication would be marked as fully dispatched after just one replicator. #4175

  • Fixed a 500 server error when two concurrent requests try to create an object with the same unique fields. #4183

  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

  • Fixed a bug where replication remotes did not have their URLs updated on subsequent runs. #4218

  • Fixed a bug where ca_cert was not getting set for replication remotes. #4219

  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

  • Fixed bug where tls_validation, client_key, and client_cert were not getting set on replication remotes. #4247

Misc

Plugin API

Features

  • Adjusted the BaseDownloader.fetch() method to accept extra_data. #4229

3.29.8 (2023-08-08)

REST API

Bugfixes

  • Fixed bug where tls_validation, client_key, and client_cert were not getting set on replication remotes. #4247

Plugin API

No significant changes.

3.29.7 (2023-08-01)

REST API

Bugfixes

  • Fixed a bug where replication remotes did not have their URLs updated on subsequent runs. #4218
  • Fixed a bug where ca_cert was not getting set for replication remotes. #4219
  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

Plugin API

No significant changes.

3.29.6 (2023-07-31)

REST API

Bugfixes

  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

Plugin API

No significant changes.

3.29.5 (2023-07-29)

REST API

Bugfixes

  • Made reclaim space task more tolerant in the face of artifact shared between two content units. #3610

  • Fixed a bug with the replicate API not handling Upstream Pulp API over HTTPS. #3910

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

  • Fixed a bug where repositories were getting deleted accross domains. #4158

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

  • Fixed bug where the Task Group for replication would be marked as fully dispatched after just one replicator. #4175

Misc

Plugin API

No significant changes.

3.29.4 (2023-07-25)

REST API

Bugfixes

  • Fixed a 500 error for Upstream Pulp Replicate API when domains are enabled. #4119
  • Fixed the OpenAPI schema for the 'replicate' operation response. #4121

Plugin API

No significant changes.

3.29.3 (2023-07-22)

REST API

Bugfixes

  • Resolved a memory leak that could occur while making large repeated queries against the API service. #2250
  • Taught repair task to be tolerant in the face of any artifact download failure. #4111

Plugin API

No significant changes.

3.29.2 (2023-07-19)

REST API

Bugfixes

  • Fixed duplicate OpenAPI operation ids when using domains. #3977
  • Updates file system exporter to correctly account the start_repository_version for pass_through publications #4051

Plugin API

No significant changes.

3.29.1 (2023-07-14)

REST API

Bugfixes

  • Pinned importlib-metadata to 6.0.1 given pip is unable to solve an opentelemetry dependency version correctly. #4042

Plugin API

No significant changes.

3.29.0 (2023-07-12)

REST API

Features

  • Added version information to tasks. Workers will refuse to pick up tasks with a version higher than their own. #3369
  • Added graceful shutdown to pulpcore-worker without killing the current task on receiving SIGHUP or SIGTERM. #3940
  • Added periodically executed cleanup tasks for uploads and temporary files. Configure a time interval in UPLOAD_PROTECTION_TIME or TMPFILE_PROTECTION_TIME to activate. #3949

Bugfixes

  • Made the incremental file export include all published metadata. #3941
  • Fixed error when downloading pull-through content that already exists in Pulp. #3945
  • Fixed circular imports caused by get_user_model calls. #3957
  • Fix api schema of the upstream_pulp_replicate operation requiring no body. #3995

Plugin API

Features

  • Added retrieve logic to MultipleArtifactContentSerializer. #3951

Bugfixes

  • Fixed the import path for pulpcore.plugin.pulp_hashlib. #4006

Misc

3.28.36 (2025-01-10)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.35 (2024-11-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.34 (2024-11-13)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.33 (2024-11-06)

REST API

Bugfixes

  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Plugin API

No significant changes.


## 3.28.32 (2024-08-10)

REST API

Bugfixes

  • Fixed RBAC permissions being incorrectly assigned in tasks that create objects. https://access.redhat.com/security/cve/cve-2024-7143 #5683

Plugin API

No significant changes.


3.28.31 (2024-07-23)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.30 (2024-07-16)

REST API

Bugfixes

  • Browsable HREFs now have clickable links again. #5563

Plugin API

No significant changes.


3.28.29 (2024-06-24)

REST API

Bugfixes

  • Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set. #5510

Plugin API

No significant changes.


3.28.28 (2024-06-18)

REST API

Misc

Plugin API

No significant changes.


3.28.27 (2024-05-22)

REST API

Bugfixes

  • Stopped deleting content and artifacts presumably created by later failed or canceled tasks. Deleting these lies solely in the responsibility of orphan cleanup. #5363

Plugin API

No significant changes.


3.28.26 (2024-04-17)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.25 (2024-03-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.24 (2024-03-05)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.23 (2024-01-30)

REST API

Bugfixes

  • Fixed a warning that gets raised when cache is enabled: RuntimeWarning: coroutine 'AsyncCache.delete' was never awaited. #4967

Plugin API

No significant changes.


3.28.22 (2024-01-25)

REST API

No significant changes.

Plugin API

No significant changes.


3.28.21 (2024-01-25)

REST API

Bugfixes

  • Fixed an issue with importing async-timeout in Python 3.11. #4923

Plugin API

No significant changes.


3.28.20 (2024-01-24)

REST API

Bugfixes

  • Fixed a regular expression used when listing directories. #3673
  • Taught repair task to be tolerant in the face of any artifact download failure. #4111
  • Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port numbers and their reuse while in time_wait state. #4452
  • Fix syncs deleting the original files. #4681

Plugin API

No significant changes.


3.28.19 (2023-11-06)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.28.18 (2023-10-16)

REST API

Bugfixes

  • Improve performance during export operations. #4551
  • Taught ContentArtifactResource import to cache content results to improve performance. #4564

Plugin API

No significant changes.

3.28.17 (2023-10-05)

REST API

Bugfixes

  • Added format param to DEFAULT_FILTERS in BaseFilterSet to fix django api format. #4450

Plugin API

No significant changes.

3.28.16 (2023-09-27)

REST API

Features

  • Enabling the TASK_DIAGNOSTICS option now additionally creates a profile of all executed tasks if the pyinstrument package is installed. This incurs a small overhead on task runtime (5-10%). #4436

Bugfixes

  • Fixed sync not deleting temporary files when WORKING_DIRECTORY is not a sub-directory of MEDIA_ROOT or when using a non-filesystem storage backend. #1936
  • Made the incremental file export include all published metadata. #3941
  • Fixed the return value of get_users_with_perms_attached_roles to give proper role names. #4478

Plugin API

No significant changes.

3.28.15 (2023-09-20)

REST API

Bugfixes

  • Ensure non-chunked exports and chunked exports use the same compression level. #4411
  • Removed compression from exports (using gzip level 0). For most users of export functionality it seems to be a poor tradeoff. #4434

Plugin API

No significant changes.

3.28.14 (2023-09-12)

REST API

Bugfixes

  • Ensured that repository and remote delete is always executed in a task. This fixes a bug when the deletion blocks the gunicorn api worker for too long. #4372

Plugin API

No significant changes.

3.28.13 (2023-09-06)

REST API

Bugfixes

  • Fix the label migration 0104 to allow upgrading from before 3.25. #4319
  • Ensure the compression level is reliably set properly as per #3869. #4351
  • Fix encrypted fields to use json instead of repr/eval and make them fit for bulk_update. This solves an issue with pulpcore-manager rotate-db-key corrupting data. #4359

Plugin API

No significant changes.

3.28.12 (2023-08-22)

REST API

Bugfixes

  • Improved the performance when looking up content for repository versions. #3969
  • Taught pulp-import to be able to use a subset of available worker-threads. #4068
  • Fixed bug where incorrect error message presented in relation to content-import #4294

Plugin API

Features

  • Added memoized system_id function to the plugin api. #4276

3.28.11 (2023-08-15)

REST API

Bugfixes

  • Taught downloader to correctly handle plugin-specified headers for object-storage backends. #4028

Plugin API

No significant changes.

3.28.10 (2023-08-08)

REST API

Bugfixes

  • Fixed bug where tls_validation, client_key, and client_cert were not getting set on replication remotes. #4247

Plugin API

No significant changes.

3.28.9 (2023-08-03)

REST API

No significant changes.

Plugin API

No significant changes.

3.28.8 (2023-08-01)

REST API

Bugfixes

  • Fixed a bug where replication remotes did not have their URLs updated on subsequent runs. #4218
  • Fixed a bug where ca_cert was not getting set for replication remotes. #4219
  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

Plugin API

No significant changes.

3.28.7 (2023-07-31)

REST API

Bugfixes

  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

Plugin API

No significant changes.

3.28.6 (2023-07-29)

REST API

Bugfixes

  • Made reclaim space task more tolerant in the face of artifact shared between two content units. #3610

  • Fixed a bug with the replicate API not handling Upstream Pulp API over HTTPS. #3910

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

  • Fixed a bug where repositories were getting deleted accross domains. #4158

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

  • Fixed bug where the Task Group for replication would be marked as fully dispatched after just one replicator. #4175

Misc

Plugin API

No significant changes.

3.28.5 (2023-07-25)

REST API

Bugfixes

  • Resolved a memory leak that could occur while making large repeated queries against the API service. #2250
  • Fixed a 500 error for Upstream Pulp Replicate API when domains are enabled. #4119
  • Fixed the OpenAPI schema for the 'replicate' operation response. #4121

Plugin API

No significant changes.

3.28.4 (2023-07-19)

REST API

Bugfixes

  • Fixed duplicate OpenAPI operation ids when using domains. #3977
  • Updates file system exporter to correctly account the start_repository_version for pass_through publications #4051

Plugin API

Bugfixes

  • Fixed the import path for pulpcore.plugin.pulp_hashlib. #4006

3.28.3 (2023-07-14)

REST API

Bugfixes

  • Pinned importlib-metadata to 6.0.1 given pip is unable to solve an opentelemetry dependency version correctly. #4042

Plugin API

No significant changes.

3.28.2 (2023-07-12)

REST API

Bugfixes

  • Fix api schema of the upstream_pulp_replicate operation requiring no body. #3995

Plugin API

No significant changes.

3.28.1 (2023-06-27)

REST API

Bugfixes

  • Fixed error when downloading pull-through content that already exists in Pulp. #3945
  • Fixed circular imports caused by get_user_model calls. #3957

Plugin API

No significant changes.

3.28.0 (2023-06-14)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737
  • Exports now use gzip compression level 1 rather than compression level 9. Exported archives will now be slightly larger, but exports should be much faster. This is considered to be a more optimal balance of space/time for the export operation. #3869
  • Fixed the method for displaying the representation of MasterModel objects. #3898

Improved Documentation

  • Removes leftover documentation referring to the deprecated Ansible based installer. #3834

Plugin API

Features

  • Added support to pull-through caching for streaming metadata files.

    Remote.get_remote_artifact_content_type can now return None to inform the content app that the requested path is a metadata file that should be streamed and not saved for the pull-through caching feature. #3817

  • Added support to pull-through caching for plugins with multi-artifact content types.

    Content.init_from_artifact_and_relative_path can now return a tuple of the new content unit and a dict containing the mapping of that content's artifacts and their relative paths. #3818

  • Added Distribution.content_headers_for() to let plugins affect content-app response headers.

    This can be useful, for example, when it's desirable for specific files to be served with Cache-control: no-cache. #3897

3.27.2 (2023-07-14)

REST API

Bugfixes

  • Fixed circular imports caused by get_user_model calls. #3957
  • Pinned importlib-metadata to 6.0.1 given pip is unable to solve an opentelemetry dependency version correctly. #4042

Plugin API

No significant changes.

3.27.1 (2023-06-05)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737
  • Fixed the method for displaying the representation of MasterModel objects. #3898

Plugin API

No significant changes.

3.27.0 (2023-05-31)

REST API

Features

  • Expose user who dispatched a Task under new field created_by. #1917
  • Added hidden field to Distributions that toggles visibility in Content app directory listing. #3538

Bugfixes

  • Taught repair task to remove unrepairable corrupted files. #1947
  • Taught repair task to continue when encountering a 404 during the repair process. #3611
  • Serialized global reclaim space, global repair artifacts tasks with respect to each other to prevent them from failing. #3786

Improved Documentation

  • Release-process documentation is now more explicit about which branches are tested by CI. #3841
  • Added the instructions needed to enable OpenTelemetry on pulp-api application. #3867

Misc

Plugin API

Features

  • Added async version of cast as acast. #3873

Bugfixes

  • Fixed potential unnecessary database calls executed after matching distributions in the content application. #3876

3.26.2 (2023-07-14)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737
  • Pinned importlib-metadata to 6.0.1 given pip is unable to solve an opentelemetry dependency version correctly. #4042

Plugin API

No significant changes.

3.26.1 (2023-05-25)

REST API

No significant changes.

Plugin API

Bugfixes

  • Fixed potential unnecessary database calls executed after matching distributions in the content application. #3876

3.26.0 (2023-05-16)

REST API

Features

  • Added a pre-delete hook to domains in order to stop orphaned content preventing the deletion. #3800
  • Enabled OpenTelemetry metrics and tracing for the pulp-api app. #3835

Improved Documentation

  • Updated examples and fixed some typos in Domains workflow doc. #3825

Plugin API

No significant changes.

3.25.1 (2023-05-25)

REST API

No significant changes.

Plugin API

Bugfixes

  • Fixed potential unnecessary database calls executed after matching distributions in the content application. #3876

3.25.0 (2023-05-10)

REST API

Features

  • Added filters with_content and latest_with_content to Repository list endpoint. #2865
  • Updated Django version to 4.2 LTS branch. #3660

Bugfixes

  • Fixed representation of domains in created_resources on task list and show. #3783
  • Deferred artifact file deletion to after committing the database transaction. #3807

Misc

Plugin API

Features

  • Created a wrapper type for UUID generation so that the implementation can potentially be switched in the future. UUIDs are just 128-bit integers - as long as they don't overlap there is no explicit need to stick with any particular implementation. Plugin writers may notice a migration created due to this change depending on how they have written the plugin. #3117
  • Bumped the database backend from psycopg2 to psycopg3. #3792

Removals

  • Removed NamedModelViewSet.extract_pk in favor of pulpcore.plugin.util.extract_pk and raise_for_unknown_content_units from pulpcore.plugin.actions, which moved to pulpcore.plugin.util. #3613
  • Removed the deprecated verify_signature. Use gpg_verify instead. #3614
  • Removed LabelsField, Label, and LabelSelectFilter. #3615
  • Updated Django version to 4.2 LTS branch. This may introduce some breaking changes to plugins. #3660

3.24.1 (2023-05-03)

REST API

Bugfixes

  • Fixed representation of domains in created_resources on task list and show. #3783

Plugin API

No significant changes.

3.24.0 (2023-05-02)

REST API

Features

  • Added commands and documentation for db encryption key rotation. #2048
  • Added ability to filter resources by list of HREFs or IDs with pulp_href__in and pulp_id__in. #2975
  • Added ability to sort by type on generic list endpoints with pulp_type__in. #3408
  • Added file size to the content app listing. #3656
  • Changed most of the update and delete tasks to allow for immediate execution if not contested by other running tasks. #3661

Bugfixes

  • Fixed some deprecations in preparation to 3.25 being a breaking change release. #3023
  • Task purge now continues when encountering a task that could not be deleted. The user is informed about any such tasks. #3530
  • Fixed package timestamp on content app to reflect time package was added to the repository. #3653
  • Fixed import/export in the presence of the domains work. #3663
  • Fixed a regular expression used when listing directories. #3673
  • Optimized queries needed when listing Tasks. #3711
  • Optimized DB queries for content, distribution, publication, remote, repository, and repository-version list endpoints. #3714
  • Downloader will now attempt to keep the filename of the requested URL intact if one exists. #3715
  • Fixed returned error codes for unauthenticated users. Pulp now returns HTTP 401 errors instead of HTTP 403 errors which were default return types for SessionAuthentication. #3730
  • Fixed issue with deleting export tasks via purge. #3741
  • Closed the window for a race condition in content creation. #3754

Improved Documentation

  • Updated contributor docs to point to the oci-env for the developer environment. #3444
  • Fixed infinite loading when searching for specific terms. #3667

Misc

Plugin API

Features

  • Added flags immediate and deferred to dispatch to allow specifying whether a task can be attempted to run synchronously and whether it can be deferred. #3661

3.23.24 (2024-01-09)

REST API

No significant changes.

Plugin API

No significant changes.


3.23.23 (2023-11-29)

REST API

Bugfixes

  • Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port numbers and their reuse while in time_wait state. #4452

Plugin API

No significant changes.

3.23.22 (2023-11-23)

REST API

Bugfixes

  • Fix syncs deleting the original files. #4681

Plugin API

No significant changes.

3.23.21 (2023-11-14)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.23.20 (2023-10-16)

REST API

Bugfixes

  • Improve performance during export operations. #4551
  • Taught ContentArtifactResource import to cache content results to improve performance. #4564

Plugin API

No significant changes.

3.23.19 (2023-10-05)

REST API

Bugfixes

  • Removed compression from exports (using gzip level 0). For most users of export functionality it seems to be a poor tradeoff. #4434
  • Added format param to DEFAULT_FILTERS in BaseFilterSet to fix django api format. #4450

Plugin API

No significant changes.

3.23.18 (2023-09-27)

REST API

Bugfixes

  • Fixed sync not deleting temporary files when WORKING_DIRECTORY is not a sub-directory of MEDIA_ROOT or when using a non-filesystem storage backend. #1936
  • Ensure non-chunked exports also use gzip compressionlevel=1 #4411
  • Fixed the return value of get_users_with_perms_attached_roles to give proper role names. #4478

Plugin API

No significant changes.

3.23.17 (2023-09-06)

REST API

Bugfixes

  • Ensure the compression level is reliably set properly as per #3869. #4351
  • Fix encrypted fields to use json instead of repr/eval and make them fit for bulk_update. This solves an issue with pulpcore-manager rotate-db-key corrupting data. #4359

Plugin API

No significant changes.

3.23.16 (2023-08-23)

REST API

Bugfixes

  • Improved the performance when looking up content for repository versions. #3969
  • Fixed bug where incorrect error message presented in relation to content-import #4294

Plugin API

No significant changes.

3.23.15 (2023-08-08)

REST API

Bugfixes

  • Fixed bug where tls_validation, client_key, and client_cert were not getting set on replication remotes. #4247

Plugin API

No significant changes.

3.23.14 (2023-08-01)

REST API

Bugfixes

  • Fixed a bug where replication remotes did not have their URLs updated on subsequent runs. #4218
  • Fixed a bug where ca_cert was not getting set for replication remotes. #4219
  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

Plugin API

No significant changes.

3.23.13 (2023-07-31)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737
  • Made the incremental file export include all published metadata. #3941
  • Updates file system exporter to correctly account the start_repository_version for pass_through publications #4051
  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

Plugin API

No significant changes.

3.23.12 (2023-07-29)

REST API

Bugfixes

  • Made reclaim space task more tolerant in the face of artifact shared between two content units. #3610

  • Fixed a bug with the replicate API not handling Upstream Pulp API over HTTPS. #3910

  • Taught pulp-import to be able to use a subset of available worker-threads. #4068

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

  • Fixed a bug where repositories were getting deleted accross domains. #4158

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

  • Fixed bug where the Task Group for replication would be marked as fully dispatched after just one replicator. #4175

Misc

Plugin API

No significant changes.

3.23.11 (2023-07-25)

REST API

Bugfixes

  • Fixed a 500 error for Upstream Pulp Replicate API when domains are enabled. #4119
  • Fixed the OpenAPI schema for the 'replicate' operation response. #4121

Plugin API

No significant changes.

3.23.10 (2023-07-22)

REST API

Bugfixes

  • Resolved a memory leak that could occur while making large repeated queries against the API service. #2250
  • Taught repair task to be tolerant in the face of any artifact download failure. #4111

Plugin API

No significant changes.

3.23.9 (2023-07-19)

REST API

Bugfixes

  • Fixed duplicate OpenAPI operation ids when using domains. #3977

Plugin API

No significant changes.

3.23.8 (2023-07-12)

REST API

Bugfixes

  • Fix api schema of the upstream_pulp_replicate operation requiring no body. #3995

Plugin API

No significant changes.

3.23.7 (2023-06-14)

REST API

Bugfixes

  • Exports now use gzip compression level 1 rather than compression level 9. Exported archives will now be slightly larger, but exports should be much faster. This is considered to be a more optimal balance of space/time for the export operation. #3869

Plugin API

No significant changes.

3.23.6 (2023-05-30)

REST API

Bugfixes

  • Taught repair task to remove unrepairable corrupted files. #1947
  • Taught repair task to continue when encountering a 404 during the repair process. #3611

Plugin API

No significant changes.

3.23.5 (2023-05-23)

REST API

Bugfixes

  • Serialized global reclaim space, global repair artifacts tasks with respect to each other to prevent them from failing. #3786

Plugin API

No significant changes.

3.23.4 (2023-05-10)

REST API

Bugfixes

  • Task purge now continues when encountering a task that could not be deleted. The user is informed about any such tasks. #3530
  • Closed the window for a race condition in content creation. #3754

Plugin API

No significant changes.

3.23.3 (2023-04-18)

REST API

No significant changes.

Plugin API

No significant changes.

3.23.2 (2023-04-11)

REST API

Bugfixes

  • Fixed package timestamp on content app to reflect time package was added to the repository. #3653
  • Downloader will now attempt to keep the filename of the requested URL intact if one exists. #3715

Plugin API

No significant changes.

3.23.1 (2023-03-27)

REST API

Bugfixes

  • Fixed import/export in the presence of the domains work. #3663
  • Fixed a regular expression used when listing directories. #3673

Plugin API

No significant changes.

3.23.0 (2023-03-14)

REST API

Features

  • Added a repository exact and in filters to the Distributions API. #3394
  • Added a new optional multi-tenancy namespacing feature: Domains. See workflow documentation for more information on this tech-preview feature. #3403
  • Add GCP support #3424
  • Added retain_repo_versions filter to Repository endpoint. #3507
  • Pass correlation id to signing script through ENV variable #3522
  • Added ability to replicate distributions/repositories from another Pulp. #3566
  • Started to collect statistics about RBAC (amd domain) usage. #3639

Bugfixes

  • Bump dynaconf version to 3.1.12 given it fixes a bug to handle failures when pwd does not exist. #3310

  • Added validation to the repository modify endpoint. #3326

  • Addressed a possible N+1 query performance issue within reclaim_space task. #3404

  • Added repeating logic to signalling a task worker subprocess. This should fix a bug where the task refuses to be terminated easily. #3407

  • Added a start_repository_version parameter to the file system exporter.

    If specified, it will export only content units that differed between two repository versions. #3413

  • Fixed the label migration code for not null constraint errors when objects with and without labels are migrated. #3495

  • Added int64 format to integer fields in api schema. #3590

  • Fixed a bug that caused Pulp to return duplicate content when a user was logged in as a non-superuser while the content was part of multiple repositories. #3641

  • Added missing validation to the repair endpoint. #3645

  • Fixed bug related to pulpcore-content serving content from a remote (pull-through-cache). #3654

Improved Documentation

  • Revisited features in tech preview (e.g., ACS, RBAC, metadata signing, import/export) and marked them production ready. #3429
  • Documented PostgreSQL version compatibility and incompatibility with transaction based connection pooling. #3505
  • Updated the release-process doc to be more complete. #3514
  • Added links to the Containerfiles used for building the pulp and pulp-minimal OCI images. #3627

Removals

  • Removed the PROFILE_STAGES_API setting along with the dependent code. #3595

Misc

Plugin API

Features

  • Refactored ArtifactDownloader stage logic into base class GenericDownloader and allow for the progress reports message and code to be customized by subclasses. #1931
  • Added version information to the worker records in the database. #3365
  • Added new config option domain_compatible to PluginAppConfig to specify Domains feature compatibility within a plugin. See Domains compatibility documentation in plugin-writer section for more information. #3403
  • Exported TaskSerializer in pulpcore.plugin.serializers #3506
  • Added Replicator class that plugins can implement to enable distribution/repository replication. #3566
  • Exposed a function for extracting PKs from URIs and a function for validating content units (pulpcore.plugin.util.extract_pk, pulpcore.plugin.util.raise_for_unknown_content_units). #3604
  • Add label_field_name arg to LabelFilter() filter that allows plugin devs to customize the model field that LabelFilter filters on. #3631

Bugfixes

  • Added HiddenFieldsMixin to the plugin API. #3520
  • Exported LabelFilter to the plugin api as a replacement for the deprecated LabelSelectFilter. #3570

Improved Documentation

  • Adds docs that plugin writers tasks must be backwards compatible until the next major Pulp version. #3368
  • Adds docs on the need and possible options for writing migrations in a way that they could be applied to a running Pulp system. #3443

Deprecations

  • Deprecated NamedModelViewSet.extract_pk in favour of pulpcore.plugin.util.extract_pk. Deprecated pulpcore.plugin.actions.raise_for_unknown_content_units in favour of pulpcore.plugin.util.raise_for_unknown_content_units. #3604

3.22.35 (2025-01-08)

REST API

No significant changes.

Plugin API

No significant changes.


3.22.34 (2024-11-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.22.33 (2024-11-13)

REST API

No significant changes.

Plugin API

No significant changes.


3.22.32 (2024-11-06)

REST API

Bugfixes

  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Plugin API

No significant changes.


3.22.31 (2024-10-01)

REST API

Bugfixes

  • Fixed a bug that caused Pulp to return duplicate content when a user was logged in as a non-superuser while the content was part of multiple repositories. #3641

Plugin API

No significant changes.


3.22.30 (2024-08-10)

REST API

Bugfixes

  • Fixed RBAC permissions being incorrectly assigned in tasks that create objects. https://access.redhat.com/security/cve/cve-2024-7143 #5683

Plugin API

No significant changes.


3.22.29 (2024-07-16)

REST API

Bugfixes

  • Browsable HREFs now have clickable links again. #5563

Plugin API

No significant changes.


3.22.28 (2024-06-24)

REST API

Bugfixes

  • Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set. #5510

Plugin API

No significant changes.


3.22.27 (2024-06-18)

REST API

Misc

Plugin API

No significant changes.


Warning

Until Role-Based Access Control is added to Pulp, REST API is not safe for multi-user use. Sensitive credentials can be read by any user, e.g. Remote.password, Remote.client_key.

3.22.26 (2024-05-14)

REST API

Bugfixes

  • Stopped deleting content and artifacts presumably created by later failed or canceled tasks. Deleting these lies solely in the responsibility of orphan cleanup. #5363

Plugin API

No significant changes.


3.22.25 (2024-04-17)

REST API

No significant changes.

Plugin API

No significant changes.


3.22.24 (2024-03-26)

REST API

Misc

Plugin API

No significant changes.


3.22.23 (2024-03-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.22.22 (2024-01-30)

REST API

Bugfixes

  • Fixed a warning that gets raised when cache is enabled: RuntimeWarning: coroutine 'AsyncCache.delete' was never awaited. #4967

Plugin API

No significant changes.


3.22.21 (2024-01-09)

REST API

No significant changes.

Plugin API

No significant changes.


3.22.20 (2023-11-30)

REST API

Bugfixes

  • Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port numbers and their reuse while in time_wait state. #4452

Plugin API

No significant changes.

3.22.19 (2023-11-15)

REST API

Bugfixes

  • Fix syncs deleting the original files. #4681

Plugin API

No significant changes.

3.22.18 (2023-11-03)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.22.17 (2023-10-16)

REST API

Bugfixes

  • Improve performance during export operations. #4551
  • Taught ContentArtifactResource import to cache content results to improve performance. #4564

Plugin API

No significant changes.

3.22.16 (2023-09-27)

REST API

Bugfixes

  • Fixed sync not deleting temporary files when WORKING_DIRECTORY is not a sub-directory of MEDIA_ROOT or when using a non-filesystem storage backend. #1936

Misc

Plugin API

No significant changes.

3.22.15 (2023-09-20)

REST API

Bugfixes

  • Ensure non-chunked exports and chunked exports use the same compression level. #4411
  • Removed compression from exports (using gzip level 0). For most users of export functionality it seems to be a poor tradeoff. #4434

Plugin API

No significant changes.

3.22.14 (2023-09-06)

REST API

Bugfixes

  • Ensure the compression level is reliably set properly as per #3869. #4351

Plugin API

No significant changes.

3.22.13 (2023-08-23)

REST API

Bugfixes

  • Improved the performance when looking up content for repository versions. #3969
  • Fixed bug where incorrect error message presented in relation to content-import #4294

Plugin API

No significant changes.

3.22.12 (2023-08-01)

REST API

Bugfixes

  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

Plugin API

No significant changes.

3.22.11 (2023-07-31)

REST API

Bugfixes

  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

Plugin API

No significant changes.

3.22.10 (2023-07-29)

REST API

Bugfixes

  • Made reclaim space task more tolerant in the face of artifact shared between two content units. #3610

  • Taught pulp-import to be able to use a subset of available worker-threads. #4068

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

Plugin API

No significant changes.

3.22.9 (2023-07-22)

REST API

Bugfixes

  • Resolved a memory leak that could occur while making large repeated queries against the API service. #2250
  • Added repeating logic to signalling a task worker subprocess. This should fix a bug where the task refuses to be terminated easily. #3407
  • Taught repair task to be tolerant in the face of any artifact download failure. #4111

Plugin API

No significant changes.

3.22.8 (2023-07-19)

REST API

Bugfixes

  • Made the incremental file export include all published metadata. #3941
  • Updates file system exporter to correctly account the start_repository_version for pass_through publications #4051

Plugin API

No significant changes.

3.22.7 (2023-06-14)

REST API

Bugfixes

  • Exports now use gzip compression level 1 rather than compression level 9. Exported archives will now be slightly larger, but exports should be much faster. This is considered to be a more optimal balance of space/time for the export operation. #3869

Plugin API

No significant changes.

3.22.6 (2023-06-07)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737

Plugin API

No significant changes.

3.22.5 (2023-05-30)

REST API

Bugfixes

  • Taught repair task to remove unrepairable corrupted files. #1947
  • Taught repair task to continue when encountering a 404 during the repair process. #3611

Plugin API

No significant changes.

3.22.4 (2023-04-11)

REST API

Bugfixes

  • Fixed package timestamp on content app to reflect time package was added to the repository. #3653
  • Downloader will now attempt to keep the filename of the requested URL intact if one exists. #3715

Plugin API

No significant changes.

3.22.3 (2023-03-06)

REST API

No significant changes.

Plugin API

No significant changes.

3.22.2 (2023-02-02)

REST API

Bugfixes

  • Added a start_repository_version parameter to the file system exporter.

    If specified, it will export only content units that differed between two repository versions. #3413

Plugin API

No significant changes.

3.22.1 (2023-01-20)

REST API

Bugfixes

  • Fixed the label migration code for not null constraint errors when objects with and without labels are migrated. #3495

Plugin API

No significant changes.

3.22.0 (2022-12-18)

REST API

Features

  • Added dates to the HTML pages listing the content of distributions. The timestamp is of when the content was created in Pulp. #2054
  • Create HiddenFieldsMixin serializer and add hidden_fields to RemoteSerializer and UserSerializer. #2825
  • Added pulpcore-manager command called remove-signing-service for removing specified signing services. #2967
  • Added the option HIDE_GUARDED_DISTRIBUTIONS to allow hiding the content guard protected distributions from the listing page. #3061
  • Added "content_settings" stanza to the /status/ output. #3138
  • Added expiry to preauthenticated URLs from ContentRedirectingContentGuard. #3238
  • Added reserved_resources, reserved_resources__in, exclusive_resources, exclusive_resources__in, shared_resources and shared_resources__in filter to task list endpoint. #3280
  • The postgresql version is now included in analytics data posted. The payload looks like: {`'postgresqlVersion': 90200}. The integer value is the raw format postgresql reports its version as. #3396
  • The new ANALYTICS setting replaced the TELEMETRY setting to avoid confusion with application metrics that will be exposed using OpenTelemetry. #3417

Bugfixes

  • Fixed the fs exporter to handle the case where there are pre-existing files in the location that FileSystem attempts to export to you get a FileExistsError. #1949
  • The logging_cid field of a task can no longer be an empty string. #3016
  • Fixed content-disposition header which is used in the object storage backends. #3124
  • Fixed the fs exporter to handle the case where hardlink method was requested but pulp and export locations are in different partitions so can't share the same inode. #3187
  • Another guardrail added around content-stages to address deadlock in a specific usecase. #3192
  • Fixed bug where installations with at least one pre-release plugin installed were posting to the production analytics site instead of the developer analytics site. #3213
  • Fixed the worker__in filter for Tasks API. #3235
  • Do not expose artifact digest via content-disposition header when using Azure backend. #3244
  • Fixed a bug that disallowed non-admin users to purge completed tasks. #3263
  • Made ordering consistent between all list API endpoints. #3266
  • Another step on closing the deadlock-window when syncing overlapping content. #3284
  • Fixed an occasional 500 error when viewing a repository version content summary while performing a content deletion task. #3299
  • Fixed an error when raising UnexportableArtifactException. #3313
  • Hardened the state transition for tasks and ensured a canceled task will have finished_at set. #3319
  • Made sure PulpImport's use of tar.extractall() is safe. #3323
  • Fixed content disposition header value when content is stored in Azure. #3342
  • Fixes schema generation to use proper type uri for HyperlinkRelatedFilter. #3351
  • Insured that pulp-export correctly locks repos-being-exported. #3370
  • Fixed the update of default access policies when fields are missing. #3391
  • Fixed the openapi spec of "fields" and "exclude_fields" querystring parameters. #3398
  • Fixed label querying performance issues. In case some labels could not be migrated properly, a datarepair-labels command was added. #3400
  • Fix migrating Remotes with @ in path #3409
  • Fixed the broken link on the root page served by pulpcore-content. #3436

Improved Documentation

  • Improvements clarifying how to specify settings and which settings are required. #2417
  • Documented Pulpcore and Plugin release processes. #3204
  • Separated the user plugin listing from the plugin developer docs more clearly. #3260
  • Remove the ansible collection from the recommendation #3430

Deprecations

  • TELEMETRY` setting was deprecated in favor ofANALYTICS. #3417 <[https://github.com/pulp/pulpcore/issues/3417](https://github.com/pulp/pulpcore/issues/3417)>__

Misc

Plugin API

Features

  • Added get_artifact_url to emit preauthed urls to existing artifacts. #2785
  • The upload feature was changed to accept already existing content. This allows multiple users to own identical content when working with plugins that implement the 'retrieve' method inside their ContentUpload serializers. #3081
  • Exposed ArtifactResponse at pulpcore.plugin.responses. #3340
  • Exposed the get_url util function. #3468

Bugfixes

  • Added BaseFilterSet to NamedModelViewSet to allow ordering on all list endpoints even without specifying a custom filterset class. #3266

Improved Documentation

  • Added documentation for plugin writers on declaring dependencies. #2997

Removals

  • Deprecated model Label and serializer field LabelField and LabelSelectFilter for removal in 3.25. #3400

3.21.36 (2024-11-13)

REST API

No significant changes.

Plugin API

No significant changes.


3.21.35 (2024-10-31)

REST API

Bugfixes

  • Fixed the JSONField specification so it doesn't break ruby bindings. See context here.

Plugin API

No significant changes.


3.21.34 (2024-10-01)

REST API

Bugfixes

  • Fixed a bug that caused Pulp to return duplicate content when a user was logged in as a non-superuser while the content was part of multiple repositories. #3641

Plugin API

No significant changes.


3.21.33 (2024-08-12)

REST API

Bugfixes

  • Fixed RBAC permissions being incorrectly assigned in tasks that create objects. https://access.redhat.com/security/cve/cve-2024-7143 #5683

Plugin API

No significant changes.


3.21.32 (2024-07-16)

REST API

Bugfixes

  • Browsable HREFs now have clickable links again. #5563

Plugin API

No significant changes.


3.21.31 (2024-06-24)

REST API

Bugfixes

  • Fixed openapi command where plugins relied on CONTENT_ORIGIN to be set. #5510

Plugin API

No significant changes.


3.21.30 (2024-06-18)

REST API

Misc

Plugin API

No significant changes.


Warning

Until Role-Based Access Control is added to Pulp, REST API is not safe for multi-user use. Sensitive credentials can be read by any user, e.g. Remote.password, Remote.client_key.

3.21.29 (2024-05-14)

REST API

Bugfixes

  • Stopped deleting content and artifacts presumably created by later failed or canceled tasks. Deleting these lies solely in the responsibility of orphan cleanup. #5363

Plugin API

No significant changes.


3.21.28 (2024-03-26)

REST API

Misc

Plugin API

No significant changes.


3.21.27 (2024-03-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.21.26 (2024-01-30)

REST API

Bugfixes

  • Fixed a warning that gets raised when cache is enabled: RuntimeWarning: coroutine 'AsyncCache.delete' was never awaited. #4967

Plugin API

No significant changes.


3.21.25 (2024-01-09)

REST API

No significant changes.

Plugin API

No significant changes.


3.21.24 (2023-11-30)

REST API

Bugfixes

  • Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port numbers and their reuse while in time_wait state. #4452

Plugin API

No significant changes.

3.21.23 (2023-11-23)

REST API

Bugfixes

  • Fix syncs deleting the original files. #4681

Plugin API

No significant changes.

3.21.22 (2023-11-14)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.21.21 (2023-10-16)

REST API

Bugfixes

  • Improve performance during export operations. #4551
  • Taught ContentArtifactResource import to cache content results to improve performance. #4564

Plugin API

No significant changes.

3.21.20 (2023-10-05)

REST API

Bugfixes

  • Made sure PulpImport's use of tar.extractall() is safe. #3323

Plugin API

No significant changes.

3.21.19 (2023-09-27)

REST API

Bugfixes

  • Fixed sync not deleting temporary files when WORKING_DIRECTORY is not a sub-directory of MEDIA_ROOT or when using a non-filesystem storage backend. #1936

Misc

Plugin API

No significant changes.

3.21.18 (2023-09-25)

REST API

Bugfixes

  • Ensure non-chunked exports and chunked exports use the same compression level. #4411
  • Removed compression from exports (using gzip level 0). For most users of export functionality it seems to be a poor tradeoff. #4434

Plugin API

No significant changes.

3.21.17 (2023-09-06)

REST API

Bugfixes

  • Ensure the compression level is reliably set properly as per #3869. #4351

Plugin API

No significant changes.

3.21.16 (2023-08-23)

REST API

Bugfixes

  • Added repeating logic to signalling a task worker subprocess. This should fix a bug where the task refuses to be terminated easily. #3407
  • Improved the performance when looking up content for repository versions. #3969
  • Fixed bug where incorrect error message presented in relation to content-import #4294

Plugin API

No significant changes.

3.21.15 (2023-08-01)

REST API

Bugfixes

  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

Plugin API

No significant changes.

3.21.14 (2023-07-31)

REST API

Bugfixes

  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

Plugin API

No significant changes.

3.21.13 (2023-07-29)

REST API

Bugfixes

  • Made reclaim space task more tolerant in the face of artifact shared between two content units. #3610

  • Taught pulp-import to be able to use a subset of available worker-threads. #4068

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

Plugin API

No significant changes.

3.21.12 (2023-07-22)

REST API

Bugfixes

  • Resolved a memory leak that could occur while making large repeated queries against the API service. #2250
  • Taught repair task to be tolerant in the face of any artifact download failure. #4111

Plugin API

No significant changes.

3.21.11 (2023-07-19)

REST API

Bugfixes

  • Made the incremental file export include all published metadata. #3941
  • Updates file system exporter to correctly account the start_repository_version for pass_through publications #4051

Plugin API

No significant changes.

3.21.10 (2023-06-14)

REST API

Bugfixes

  • Exports now use gzip compression level 1 rather than compression level 9. Exported archives will now be slightly larger, but exports should be much faster. This is considered to be a more optimal balance of space/time for the export operation. #3869

Plugin API

No significant changes.

3.21.9 (2023-06-06)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737

Plugin API

No significant changes.

3.21.8 (2023-05-30)

REST API

Bugfixes

  • Taught repair task to remove unrepairable corrupted files. #1947
  • Taught repair task to continue when encountering a 404 during the repair process. #3611

Plugin API

No significant changes.

3.21.7 (2023-04-11)

REST API

Bugfixes

  • Downloader will now attempt to keep the filename of the requested URL intact if one exists. #3715

Plugin API

No significant changes.

3.21.6 (2023-03-29)

REST API

Bugfixes

  • Fixed an error when raising UnexportableArtifactException. #3313
  • Fixed the openapi spec of "fields" and "exclude_fields" querystring parameters. #3398

Plugin API

No significant changes.

3.21.5 (2023-02-02)

REST API

Bugfixes

  • Added a start_repository_version parameter to the file system exporter.

    If specified, it will export only content units that differed between two repository versions. #3413

Plugin API

No significant changes.

3.21.4 (2023-01-20)

REST API

Bugfixes

  • Fixed an occasional 500 error when viewing a repository version content summary while performing a content deletion task. #3299
  • Fix migrating Remotes with @ in path #3409

Plugin API

No significant changes.

3.21.3 (2022-11-15)

REST API

Bugfixes

  • Adjust the dependency on cryptography to suite more versions of pulp-certguard. #3269
  • Insured that pulp-export correctly locks repos-being-exported. #3370
  • Fixed the update of default access policies when fields are missing. #3391

Plugin API

No significant changes.

3.21.2 (2022-10-24)

REST API

Bugfixes

  • Another step on closing the deadlock-window when syncing overlapping content. #3284
  • Fixed content disposition header value when content is stored in Azure. #3342

Plugin API

No significant changes.

3.21.1 (2022-10-18)

REST API

Bugfixes

  • Fixed the fs exporter to handle the case where there are pre-existing files in the location that FileSystem attempts to export to you get a FileExistsError. #1949
  • Fixed content-disposition header which is used in the object storage backends. #3124
  • Fixed the fs exporter to handle the case where hardlink method was requested but pulp and export locations are in different partitions so can't share the same inode. #3187
  • Another guardrail added around content-stages to address deadlock in a specific usecase. #3192
  • Fixed bug where installations with at least one pre-release plugin installed were posting to the production telemetry site instead of the developer telemetry site. #3213
  • Do not expose artifact digest via content-disposition header when using Azure backend. #3244

Plugin API

No significant changes.

3.21.0 (2022-09-08)

REST API

Features

  • Added an option for automatically creating repositories on the fly during an import procedure. The option is disabled by default. Enable it by setting the field create_repositories to True via the REST API. #1920

  • Content app now groups distributions in a directory structure on the landing page. #1951

  • Added RBAC protection to upload objects. #2362

  • New endpoint to list all Remote objects is now available at /pulp/api/v3/remotes/. #2530

  • HyperlinkRelatedFilter can now be filtered by object types and NULL values.

    Repositories can now be filtered by Remotes. #2864

  • Introduced the with_content query parameter that filters distributions by the specified content unit. #2952

  • Add a debug log to see where is file downloaded from. #3088

  • Introduces anonymous telemetry data posting to https://analytics.pulpproject.org/. This is enabled by default, and can be disabled by setting the TELEMETRY setting to False. See the telemetry docs for more info on exactly what is posted along with an example. #3115

Bugfixes

  • Fixed the value of the Content-Type header returned for .xml.gz files. #2811
  • Improve content app performance on head requests #2924
  • Use published relative paths for FS Exporter. #2933
  • Configured aiohttp to avoid rewriting redirect URLs, as some web servers (e.g. Amazon CloudFront) can be tempermental about the encoding of the URL. #2964
  • Fixed inaccurate 404 error message for content app. #2977
  • Fixed variable referenced before assignment error in django-admin dump-permissions. #3011
  • Do not create telemetry TaskSchedule for production systems. #3015
  • Serialized orphan cleanup tasks with respect to each other to prevent them from failing. #3030
  • Fixed 500 error when 'range' header starts with a negative value for 'on-demand' content. #3052
  • Fixed bug where 'range' header with a start value greater than size of on-demand content would produce an incomplete response. #3054
  • Fixed a bug where Content-Length header value was wrong when on-demand content was requested with a Range header that has an end value greater than the size of the content. #3055
  • Fixed a bug in the routing logic, where generic base class viewsets were served on actual urls. #3056
  • Fixed a bug in import code where all objects imported would also be added to the target repository by their UUID. In case of a UUID-collision with content, unwanted content may have ended up being in the next repository version. #3064
  • Fixed a bug that caused the import machinery to import the same content multiple times in a row. #3075
  • Limited access policy reset to viewsets with a default one. This will solve 500 errors when trying to reset an access policy whose viewset name is repeated by an abstract base class. Stopped reporting on unmodified access policies when migrating. #3080
  • Fixed another rare deadlock for high-concurrency/overlapping-content syncs. #3111
  • Fixed the progress report counter for imported content units. #3113
  • Moved telemetry setup to the pulpcore-worker startup sequence. This will prevent orm calls before all apps are ready. #3122

Improved Documentation

  • docs: Update the architecture diagram to reflect the fact that both API and workers talk to redis. #3000
  • Multiple updates to the PyPI (manual) install instructions. #3051

Misc

Plugin API

Features

  • Exposed the RepositoryResource class to enable plugin writers to customize the way of importing/exporting of particular repository types. Repositories should be now a part of exported resources to enable automatic creation of missing repositories. #1920
  • Added a global access condition has_upload_param_model_or_obj_perms to enforce permissions on the upload parameter. #2362
  • Extended the interface of verify_signature as a new function gpg_verify to support file like objects in addition to a file path and also return the python-gnupg verify object. #2930
  • Added new field info to the RepositoryVersion. This will allow to store additional information for a specific version. #2998
  • Added pulpcore.plugin.models.EncryptedTextField to plugin api. #3157 <https://github.com/pulp/pulpcore/issues/3157>`__

Improved Documentation

  • Adds Master/Detail pattern overview and usage documentation to the Plugin writer docs. #2981
  • Documented the use of RolesMixin in the plugin writer concepts section. #3085

Removals

  • Deprecated verify_signature in favor of gpg_verify for removal in 3.25. #2930

3.20.0 (2022-06-21)

REST API

Features

  • Added a repository filter to publications. #1912

  • The status API endpoint now shows the python package name that provides a given plugin. #1982

  • Queryset scoping can be customized by the user using the new field queryset_scoping on a ViewSet's AccessPolicy. #2114

  • Enabled administrators to work with a customized GnuPG home directory and keyring during the creation of a signing service. The introduced optional arguments --gnupghome and --keyring are available under the pulpcore-manager add-signing-service command. #2476

  • Added the setting REDIRECT_TO_OBJECT_STORAGE to allow using cloud storage with or without redirecting urls.

    Added support for sftp storage via the pulpcore.app.models.storage.PulpSFTPStorage class. #2537

  • Added more details to an error message that is shown when none of the allowed content checksums hashers could be used. #2550

  • Add contains_permission query parameter to the roles API that allows clients to get back a list of roles that have any permission in a list of permissions. #2715

  • Master Content endpoint, /pulp/api/v3/content/, has a new access policy that allows any authenticated user to view content. The endpoint now scopes the content based on repositories the user can see. #2724

  • New AccessPolicies have been added to ContentGuard, Distribution, Publication, Repository, and RepositoryVersions master ViewSets. Queryset scoping has been enabled for each ViewSet. #2725

  • New AccessPolicy for ContentRedirectContentGuard ViewSet has been added. #2726

  • Added dump-permissions management command to list deprecated permissions not yet translated into roles. This is the only way to get to this information after the 3.20 release. #2741

  • Add ?for_object_type query parameter to Roles API that accepts an object HREF and returns a list of roles that only contain permissions for the given object type. #2747

  • Add role description and permissions to group and user role serializer. #2765

Bugfixes

  • Leading and trailing whitespace characters are no longer trimmed in passwords within remotes. #2068

  • Fixed generation of the redirect url to the object storage #2075

  • Taught PulpImport to stream imports rather than reading files into memory in one chunk.

    This largely alleviates the memory-pressure that results from importing multiple large repositories in parallel. #2307

  • Made the API root endpoint accessible for anonymous users once again. #2340

  • Removed il8n from the logs written so they will always show up in English for speedy resolution of error messages. All user facing strings are still expected to be il8n. #2477

  • Replaced "//" with "/" in base_url when CONTENT_PATH_PREFIX is "" or "/". #2553

  • Fixed does_batch method in sync pipeline to allow waiting on content that is already resolved. #2557

  • Fixed OOM error after uploading large chunked files. #2573

  • Ensure downloader resets file on retry. #2576

  • Taught PulpImport to retry more than once in the event of creation-collisions.

    This fixes a rare import-failure during high-concurrency, high-content-overlap imports. #2589

  • Improved the error message when HTTP proxies reject requests from Pulp. #2654

  • Fix ?ordering=role on user and group role apis so that it sorts results by role name. #2703

  • Add options to the role_util functions to make them work the same as guardian did. #2739

  • Fixed a bug that disallowed administrators to create a signing service via the pulpcore-manager utility. #2798

  • Reduced duplicate SQL queries for AccessPolicy when accessing any view. #2802

  • Fixed docs regarding the default for orphan protection time. #2810

  • Started showing errors when users try to export remote artifacts. #2817

  • Restore multiple-retry logic for PulpImport. #2854

Improved Documentation

  • Cleared out some of the paragraphs from the "Pull Request Walkthrough" section. #1852
  • Added a troubleshooting section that includes information on how to enable DEBUG logging. #1944
  • Removed some out of date references to Redmine (the previous issue tracker). We use Github Issues now. #2642
  • Added a note about explicitly setting content_object to null when assigning model-level permissions. #2758
  • Fixed extlinks use in docs to be Sphinx==5.0.0 compatible. #2782
  • Update installation instructions about "User and database configuration" for the Database setup to point to a matching Django documentation. #2877

Removals

  • Removed the group permission endpoints api/v3/groups/:id/model_permissions/ and api/v3/groups/:id/object_permissions/. Permissions should be managed via roles exclusively. #2050
  • Removed django-guardian from the stack. The guardian.backends.ObjectPermissionBackend should not be used anymore. #2051
  • Deprecated creation hook interface was removed. Creation hook need to be registered with the view set by the plugin writer before being used. Creation hooks can no longer be added with the deprecated name permission_assignments. #2559

Misc

Plugin API

Features

  • Plugins are required to provide the python_package_name as a string attribute on their subclass of PulpPluginAppConfig. #1982

  • Exposed the method raise_for_unknown_content_units which raises ValidationError for content units that were not found in the database. #2052

  • Plugins now have to enable default queryset scoping by setting the queryset_scoping field on the AccessPolicy to {"function": "scope_queryset"}.

    Default queryset scoping behavior can be changed by supplying a new scope_queryset method.

    Extra queryset scoping functions can be declared on plugin ViewSets and used by setting the AccessPolicy's queryset_scoping field. #2114

  • DeclarativeArtifact now accepts a urls option which permits multiple URLs to be provided for a single artifact. If multiple URLs are provided, the download stage will try each of them in turn upon encountering failures. #2175

  • Exposed the function pulpcore.plugin.util.verify_signature for verifying signatures created by signing services. #2476

  • Added pulpcore.plugin.content.ArtifactResponse to plugin API. Use this response to stream an artifact from the object storage if redirecting is impossible. #2537

  • Queryset scoping is now performed when the ViewSet's AccessPolicy field scope_queryset is set to a function on the ViewSet.

    NamedModelViewSet now has default scoping method scope_queryset that will scope the request off of queryset_filtering_required_permission if present. If ViewSet is a master ViewSet then scoping will be performed by calling each child's scoping method if present. #2723

  • Content ViewSets default scope_queryset method will scope based on repositories the user can see. #2724

  • Added the ability to specify an upload for the single shot upload serializer. This allows to upload files in chunks and attach them with content in repositories without creating orphans. #2786

  • Added new access condition has_required_repo_perms_on_upload for RBAC plugins to use to require users to specify a repository when uploading content. If not used when uploading content, non-admin users will not be able to see their uploaded content if queryset scoping is enabled. #2796

Bugfixes

  • Reworked the ordering framework to use django-filters.

    Plugins should not declare filter-backends on viewsets. #2703

Improved Documentation

  • Updated plugin writers RBAC guide to explain more roles and less permissions. Removed mentions of django-guardian. #2463
  • Added docs on the expectation that all user-facing strings are i8ln wrapped with gettext, but log messages are not. #2477

Removals

  • The pulpcore.plugin.exceptions.MissingResource object has been removed. Instead let 404 errors propagate upwards for DRF to handle, or use the DRF exception NotFound. #1812
  • Removed django-guardian from the stack. This includes the removal of AutoDeleteObjPermsMixin from the plugin api. #2051
  • Removed the custom_file_object argument to pulpcore.plugin.download.BaseDownloader. Now all downloaded data will be written to a random file in the current working directory. Further customization of where downloaded data can be written to can be done through subclassing. #2137
  • Constructor signature of DigestValidationError and SizeValidationError has changed - the "actual" and "expected" values are now required and "url" which was previously a positional argument is now a keyword argument. #2244
  • The pulpcore.plugin.constants.API_ROOT has been removed. Use the V3_API_ROOT and V3_API_ROOT_NO_FRONT_SLASH settings instead. #2556
  • Plugins using the SingleArtifactContentUploadSerializer must place a super call when overwriting deferred_validate. They can only assume the existance of the Artifact in the database, after this call. #2786

Misc

3.19.1 (2022-07-11)

REST API

Bugfixes

  • Taught PulpImport to stream imports rather than reading files into memory in one chunk.

    This largely alleviates the memory-pressure that results from importing multiple large repositories in parallel. #2307

  • Fixed does_batch method in sync pipeline to allow waiting on content that is already resolved. #2557

  • Ensure downloader resets file on retry. #2576

  • Taught PulpImport to retry more than once in the event of creation-collisions.

    This fixes a rare import-failure during high-concurrency, high-content-overlap imports. #2589

  • Improved the error message when HTTP proxies reject requests from Pulp. #2654

  • Restore multiple-retry logic for PulpImport. #2854

  • Improve content app performance on head requests #2924

Improved Documentation

  • Removed some out of date references to Redmine (the previous issue tracker). We use Github Issues now. #2642
  • Fixed extlinks use in docs to be Sphinx==5.0.0 compatible. #2782

Misc

Plugin API

No significant changes.

3.19.0 (2022-04-12)

REST API

Features

  • Content app now logs where it gets on-demand and streamed content from. #2059
  • Reclaim disk space can now accept ["*"] for repo_hrefs to specify all repositories for reclaim. #2065
  • Added a filter to allow searching for user roles by their description. #2276
  • Add swagger view and make OpenAPI human readable #2291
  • Adds a TASK_DIAGNOSTICS setting which will enable each task to write out diagnostic information such as memory usage of the task to a data file in /var/tmp/pulp/<task_UUID>/. This is disabled by default. #2329
  • Added a /pulp/api/v3/distributions/ endpoint to list all distributions. #2379

Bugfixes

  • Added reason for 404 error when accessing distributions without a publication. #1910

  • Fixed validation order of required settings to occur before plugin settings are loaded. #1968

  • Fix delete repository version causing "duplicate key value violates unique constraint" error. #2047

  • Fixed two instances of Pulp not writing to the task worker's temporary directory. #2061

  • Reduced memory usage during tasks like sync by holding fewer objects in-memory unnecessarily. #2069

  • Fixed migration 0064_add_new_style_task_columns to purge extraneous ReservedResource and TaskReservedResource entries, which could block sync and publish tasks post-upgrade.

    Also taught the migration to bulk-update the Task changes. In large installations, this should have a positive impact on the time it takes to apply the migration. #2101

  • Taught task-purge to process tasks in batches of 1000. This prevents large purges from using large amounts of memory as a result of reading all the affected Tasks into memory at once. #2215

  • This fix prevents the lost track of a content removed version when deleting a repository version that deletes a content that is added back in the subsequent version, but deleted again in a later version. #2267

  • Added transactions around repository version operations to prevent data loss. #2268

  • Loosened the version-restrictions on PulpImport to only require X.Y matching. #2269

  • Fix a mistake in a previous migration which may have caused improperly encrypted remote fields. #2327

  • Fixed improper fields being listed in RepositoryVersion repair API. #2330

  • Fixes duplicate key error Key (content_artifact_id, remote_id) when creating RemoteArtifacts during syncs in pulp_container and possibly other plugins. #2381

  • Declared proper dependency on user model in migration 0040. #2403

  • Fixed a rare deadlock when sync'ing overlapping content in high-concurrency envs. #2420

  • Fixed a (rare) deadlock around bulk_update() during syncs with overlapping content. #2430

  • Fixed a bug where notifications to workers may go unnoticed. This may lead to idle workers while there are tasks waiting. #2506

Improved Documentation

  • Updates and revises docs on webserver based authentication. #2260
  • Adds docs on recording and building graphs from the memory data saved by the TASK_DIAGNOSTICS setting. #2329

Removals

  • Removed the Django UI Admin site. It was added to provide RBAC permissions management before there were APIs that could provide that. It was tech preview and now there are APIs for user and group management, along with role and permission assignment. It is being removed because the direct DB access it provides has caused some issues for users, especially since its not integrated with the validation provided by Django Rest Framework, which Pulp uses. #2374

Plugin API

Features

  • Exposed the PulpRemoteUserAuthentication class to plugin writers. This will allow the use of remote authentication methods when building protected endpoints. #2262
  • Added new global access conditions has_publication_param_model_or_obj_perms and has_repo_or_repo_ver_param_model_or_obj_perms for RBAC checks. #2364
  • Changed the reusable_conditions module configuration for access policies to being a list to enable plugins to add custom modules to it. #2495

Bugfixes

  • Adjusted the default size of the queues between pipelines to be 1 instead of 1000. The batchers in the stage will still accumulate up to 500 (by default) items so batching is still in-effect there where it matters. #2069

3.18.36 (2024-03-26)

REST API

No significant changes.

Plugin API

No significant changes.


3.18.35 (2024-01-30)

REST API

Bugfixes

  • Fixed a warning that gets raised when cache is enabled: RuntimeWarning: coroutine 'AsyncCache.delete' was never awaited. #4967

Plugin API

No significant changes.


3.18.34 (2024-01-09)

REST API

No significant changes.

Plugin API

No significant changes.


3.18.33 (2023-12-01)

REST API

Bugfixes

  • Removed a workaround to force close all tcp connections in sync leading to an exhaustion of port numbers and their reuse while in time_wait state. #4452

Plugin API

No significant changes.


3.18.32 (2023-11-14)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.18.31 (2023-10-16)

REST API

Bugfixes

  • Improve performance during export operations. #4551
  • Taught ContentArtifactResource import to cache content results to improve performance. #4564

Plugin API

No significant changes.

3.18.30 (2023-10-05)

REST API

Bugfixes

  • Made sure PulpImport's use of tar.extractall() is safe. #3323

Plugin API

No significant changes.

3.18.29 (2023-09-27)

REST API

Improved Documentation

  • Adds docs on recording and building graphs from the memory data saved by the TASK_DIAGNOSTICS setting. #2329

Misc

Plugin API

No significant changes.

3.18.28 (2023-09-20)

REST API

Bugfixes

  • Improved the performance when looking up content for repository versions. #3969
  • Ensure non-chunked exports and chunked exports use the same compression level. #4411
  • Removed compression from exports (using gzip level 0). For most users of export functionality it seems to be a poor tradeoff. #4434

Plugin API

No significant changes.

3.18.27 (2023-09-06)

REST API

Bugfixes

  • Ensure the compression level is reliably set properly as per #3869. #4351

Plugin API

No significant changes.

3.18.26 (2023-08-23)

REST API

Bugfixes

  • Fixed bug where incorrect error message presented in relation to content-import #4294

Plugin API

No significant changes.

3.18.25 (2023-08-01)

REST API

Bugfixes

  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

Plugin API

No significant changes.

3.18.24 (2023-07-31)

REST API

Bugfixes

  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

Plugin API

No significant changes.

3.18.23 (2023-07-29)

REST API

Bugfixes

  • Made reclaim space task more tolerant in the face of artifact shared between two content units. #3610

  • Taught pulp-import to be able to use a subset of available worker-threads. #4068

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

Plugin API

No significant changes.

3.18.22 (2023-07-25)

REST API

Bugfixes

  • Taught repair task to be tolerant in the face of any artifact download failure. #4111

Plugin API

No significant changes.

3.18.21 (2023-07-19)

REST API

Bugfixes

  • Made the incremental file export include all published metadata. #3941
  • Updates file system exporter to correctly account the start_repository_version for pass_through publications #4051

Plugin API

No significant changes.

3.18.20 (2023-06-14)

REST API

Bugfixes

  • Exports now use gzip compression level 1 rather than compression level 9. Exported archives will now be slightly larger, but exports should be much faster. This is considered to be a more optimal balance of space/time for the export operation. #3869

Plugin API

No significant changes.

3.18.19 (2023-06-06)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737

Plugin API

No significant changes.

3.18.18 (2023-05-30)

REST API

Bugfixes

  • Taught repair task to remove unrepairable corrupted files. #1947
  • Taught repair task to continue when encountering a 404 during the repair process. #3611

Plugin API

No significant changes.

3.18.17 (2023-04-11)

REST API

Bugfixes

  • Downloader will now attempt to keep the filename of the requested URL intact if one exists. #3715

Plugin API

No significant changes.

3.18.16 (2023-03-29)

REST API

Bugfixes

  • Fixed an error when raising UnexportableArtifactException. #3313

Plugin API

No significant changes.

3.18.15 (2023-03-09)

REST API

Bugfixes

  • Added a start_repository_version parameter to the file system exporter.

    If specified, it will export only content units that differed between two repository versions. #3413

Plugin API

No significant changes.

3.18.14 (2023-02-23)

REST API

Bugfixes

  • Fixed a bug that caused the import machinery to import the same content multiple times in a row. #3075

Plugin API

No significant changes.

3.18.13 (2023-01-20)

REST API

Bugfixes

  • Fixed an occasional 500 error when viewing a repository version content summary while performing a content deletion task. #3299

Plugin API

No significant changes.

3.18.12 (2023-01-10)

REST API

Bugfixes

  • Insured that pulp-export correctly locks repos-being-exported. #3370
  • Fix migrating Remotes with @ in path #3409

Plugin API

No significant changes.

3.18.11 (2022-11-02)

REST API

Bugfixes

  • Fixed the fs exporter to handle the case where there are pre-existing files in the location that FileSystem attempts to export to you get a FileExistsError. #1949
  • Fixed the fs exporter to handle the case where hardlink method was requested but pulp and export locations are in different partitions so can't share the same inode. #3187
  • Another step on closing the deadlock-window when syncing overlapping content. #3284

Plugin API

No significant changes.

3.18.10 (2022-09-14)

REST API

Bugfixes

  • Another guardrail added around content-stages to address deadlock in a specific usecase. #3192

Plugin API

No significant changes.

3.18.9 (2022-09-01)

REST API

Bugfixes

  • Fixed the value of the Content-Type header returned for .xml.gz files. #2811
  • Fixed another rare deadlock for high-concurrency/overlapping-content syncs. #3111

Plugin API

No significant changes.

3.18.8 (2022-08-16)

REST API

No significant changes.

Plugin API

No significant changes.

3.18.7 (2022-08-15)

REST API

Bugfixes

  • Serialized orphan cleanup tasks with respect to each other to prevent them from failing. #3030

Plugin API

No significant changes.

3.18.6 (2022-08-03)

REST API

Bugfixes

  • Restore multiple-retry logic for PulpImport. #2854
  • Improve content app performance on head requests #2924
  • Use published relative paths for FS Exporter. #2933
  • Configured aiohttp to avoid rewriting redirect URLs, as some web servers (e.g. Amazon CloudFront) can be tempermental about the encoding of the URL. #2964

Improved Documentation

  • Removed some out of date references to Redmine (the previous issue tracker). We use Github Issues now. #2642
  • Fixed extlinks use in docs to be Sphinx==5.0.0 compatible. #2782

Plugin API

No significant changes.

3.18.5 (2022-05-10)

REST API

Bugfixes

  • Taught PulpImport to stream imports rather than reading files into memory in one chunk.

    This largely alleviates the memory-pressure that results from importing multiple large repositories in parallel. #2307

  • Fixed does_batch method in sync pipeline to allow waiting on content that is already resolved. #2557

  • Ensure downloader resets file on retry. #2576

  • Taught PulpImport to retry more than once in the event of creation-collisions.

    This fixes a rare import-failure during high-concurrency, high-content-overlap imports. #2589

  • Improved the error message when HTTP proxies reject requests from Pulp. #2654

Plugin API

No significant changes.

3.18.4 (2022-04-12)

REST API

Bugfixes

  • Fixed two instances of Pulp not writing to the task worker's temporary directory. #2061
  • Taught task-purge to process tasks in batches of 1000. This prevents large purges from using large amounts of memory as a result of reading all the affected Tasks into memory at once. #2215
  • Loosened the version-restrictions on PulpImport to only require X.Y matching. #2269
  • Fixed a (rare) deadlock around bulk_update() during syncs with overlapping content. #2430
  • Fixed a bug where notifications to workers may go unnoticed. This may lead to idle workers while there are tasks waiting. #2506

Plugin API

No significant changes.

3.18.3 (2022-03-25)

REST API

Bugfixes

  • Reduced memory usage during tasks like sync by holding fewer objects in-memory unnecessarily. #2069
  • Fixes duplicate key error Key (content_artifact_id, remote_id) when creating RemoteArtifacts during syncs in pulp_container and possibly other plugins. #2381
  • Declared proper dependency on user model in migration 0040. #2403
  • Fixed a rare deadlock when sync'ing overlapping content in high-concurrency envs. #2420

Plugin API

Bugfixes

  • Adjusted the default size of the queues between pipelines to be 1 instead of 1000. The batchers in the stage will still accumulate up to 500 (by default) items so batching is still in-effect there where it matters. #2069

3.18.2 (2022-03-18)

REST API

Bugfixes

  • Fix delete repository version causing "duplicate key value violates unique constraint" error. #2047

  • Fixed migration 0064_add_new_style_task_columns to purge extraneous ReservedResource and TaskReservedResource entries, which could block sync and publish tasks post-upgrade.

    Also taught the migration to bulk-update the Task changes. In large installations, this should have a positive impact on the time it takes to apply the migration. #2101

  • This fix prevents the lost track of a content removed version when deleting a repository version that deletes a content that is added back in the subsequent version, but deleted again in a later version. #2267

  • Fix a mistake in a previous migration which may have caused improperly encrypted remote fields. #2327

Plugin API

No significant changes.

3.18.1 (2022-03-01)

REST API

Bugfixes

  • Added transactions around repository version operations to prevent data loss. #2268

Plugin API

No significant changes.

3.18.0 (2022-02-22)

REST API

Features

  • Added a pulpcore-manager command remove-plugin to remove a Pulp plugin. #1945

  • Implemented the Redis caching machinery that can be used within the synchronous context. #2003

  • Add a "current_task" field to workers so that you can easily see which workers are currently active. #2034

  • Allowed Pulp to install without Redis. #2057

  • Added has_repository_obj_perms and has_repository_model_or_obj_perms as access conditions that can be used by viewsets nested beneath repository viewsets. #2076

  • Queryset scoping can now be disabled by changing the DEFAULT_PERMISSION_CLASSES. #2115

  • Specifying a different value for DEFAULT_PERMISSION_CLASSES will now automatically disable the permission assignment provided by the creation_hooks portion of an AccessPolicyFromDB. #2116

  • The Pulp API can now be rerooted using the new API_ROOT setting. By default it is set to /pulp/. Pulp appends the string api/v3/ onto the value of API_ROOT. #2148

  • Added a redirecting content guard that can be employed by plugins to forward from a REST call to the content app. #2151

  • Added a new analyze-publication management command to facilitate debugging. #2200

  • Added a read-only task schedule view for configured tasks schedules.

    NOTE: This feature is in tech-preview and may change in backwards incompatible ways in the future. #2204

Bugfixes

  • Fix import and export OOM error. #2072

  • Fixed downloader retry logic with partially written files. #2078

  • Fix content summary showing incorrect count after previous version deletion. #2084

  • Fixed issue with listing repository versions after deleting previous versions. #2085

  • Fixed file descriptior leak during upload. #2087

  • Fixed an api schema bug where both permission_assignment and creation_hooks were required by the AccessPolicy serializer. #2089

  • Fixed migration 0081 to be compatible with custom User models. #2090

  • Fixed PulpImport to correctly save relative to MEDIA_ROOT. #2091

  • Added proper logging around certain ways a task could fail. #2093

  • Taught PulpImport to retry in the event of a concurrency-collision on ContentArtifact. #2102

  • Fixed an edge case where the first (streamed) response from an repo synced as "on_demand" could be incorrect. #2119

  • Fixed bug where retries of partially downloaded files failed digest and size validation. #2135

  • Fixed the calculation of response range headers in streaming answers from the content app. #2147

  • Fixed potential deadlock-window in touch() path. #2157

  • Fixed reporting tasks being canceled before being picked up by a worker as canceled instead of failed. #2183

  • Return a concise message exception on 500 in case file is missing on the FS. #2187

  • Fixed import/export of repositories with sub-content.

    An example would be the sub-repositories in pulp_rpm DistributionTrees. #2192

  • touch() now uses standard Django instead of raw-sql to update. #2229

Misc

Plugin API

Features

  • The AutoAddObjPermsMixin now calls a handle_creation_hooks interface on the configured DRF permission class, e.g. the default AccessPolicyFromDB. #2116
  • Added a redirecting content guard that can be employed by plugins to generate preauthenticated URLs that forward from a REST call to the content app. Added the GetOrCreateSerializerMixin to get_or_create objects still validating them through the serializer. #2151
  • Exposed synchronous and asynchronous caching machinery. The classes AsyncContentCache and SyncContentCache can be now managed by plugin writers. #8806

Bugfixes

  • Started using a plugin provided serializer in has_remote_param_obj_perms and has_remote_param_model_or_obj_perms to solve the Unexpected field error during sync by a non-admin user. #2088
  • Exposed adjust_roles in the plugin api. #2092
  • Expose Roles model in plugin api. #2185

Removals

  • Deprecate the the use of custom_file_object parameter in BaseDownloader. #2123

Deprecations

  • The API_ROOT constant has been deprecated and turned into a setting. Its removal is scheduled for 3.20. Please use the setting with the same name instead. #2148
  • The ACCESS_POLICY_VIEWSET_NAME attribute is no longer expected to be present on models. The RBAC machinery no longer uses this, and if present a deprecation warning will be emitted. #2209

3.17.8 (2022-05-10)

REST API

Bugfixes

  • Taught PulpImport to stream imports rather than reading files into memory in one chunk.

    This largely alleviates the memory-pressure that results from importing multiple large repositories in parallel. #2307

  • Fixed does_batch method in sync pipeline to allow waiting on content that is already resolved. #2557

  • Ensure downloader resets file on retry. #2576

  • Taught PulpImport to retry more than once in the event of creation-collisions.

    This fixes a rare import-failure during high-concurrency, high-content-overlap imports. #2589

  • Improved the error message when HTTP proxies reject requests from Pulp. #2654

Plugin API

No significant changes.

3.17.7 (2022-04-12)

REST API

Bugfixes

  • Fixed two instances of Pulp not writing to the task worker's temporary directory. #2061
  • Taught task-purge to process tasks in batches of 1000. This prevents large purges from using large amounts of memory as a result of reading all the affected Tasks into memory at once. #2215
  • Loosened the version-restrictions on PulpImport to only require X.Y matching. #2269
  • Fixed a (rare) deadlock around bulk_update() during syncs with overlapping content. #2430
  • Fixed a bug where notifications to workers may go unnoticed. This may lead to idle workers while there are tasks waiting. #2506

Plugin API

No significant changes.

3.17.6 (2022-03-25)

REST API

Bugfixes

  • Reduced memory usage during tasks like sync by holding fewer objects in-memory unnecessarily. #2069
  • Fixes duplicate key error Key (content_artifact_id, remote_id) when creating RemoteArtifacts during syncs in pulp_container and possibly other plugins. #2381
  • Declared proper dependency on user model in migration 0040. #2403
  • Fixed a rare deadlock when sync'ing overlapping content in high-concurrency envs. #2420

Plugin API

Bugfixes

  • Adjusted the default size of the queues between pipelines to be 1 instead of 1000. The batchers in the stage will still accumulate up to 500 (by default) items so batching is still in-effect there where it matters. #2069

3.17.5 (2022-03-18)

REST API

Bugfixes

  • Fix delete repository version causing "duplicate key value violates unique constraint" error. #2047

  • Fixed migration 0064_add_new_style_task_columns to purge extraneous ReservedResource and TaskReservedResource entries, which could block sync and publish tasks post-upgrade.

    Also taught the migration to bulk-update the Task changes. In large installations, this should have a positive impact on the time it takes to apply the migration. #2101

  • Taught PulpImport to retry in the event of a concurrency-collision on ContentArtifact. #2102

  • This fix prevents the lost track of a content removed version when deleting a repository version that deletes a content that is added back in the subsequent version, but deleted again in a later version. #2267

  • Fix a mistake in a previous migration which may have caused improperly encrypted remote fields. #2327

Plugin API

No significant changes.

3.17.4 (2022-03-01)

REST API

Bugfixes

  • Fix import and export OOM error. #2072

  • Fixed downloader retry logic with partially written files. #2078

  • Fix content summary showing incorrect count after previous version deletion. #2084

  • Fixed issue with listing repository versions after deleting previous versions. #2085

  • Fixed file descriptior leak during upload. #2087

  • Added proper logging around certain ways a task could fail. #2093

  • Make checksum mismatches a retryable error. #2094

  • Fixed an edge case where the first (streamed) response from an repo synced as "on_demand" could be incorrect. #2119

  • Fixed bug where retries of partially downloaded files failed digest and size validation. #2135

  • Fixed the calculation of response range headers in streaming answers from the content app. #2147

  • Fixed potential deadlock-window in touch() path. #2157

  • Fixed reporting tasks being canceled before being picked up by a worker as canceled instead of failed. #2183

  • Fixed import/export of repositories with sub-content.

    An example would be the sub-repositories in pulp_rpm DistributionTrees. #2192

  • touch() now uses standard Django instead of raw-sql to update. #2229

  • Added transactions around repository version operations to prevent data loss. #2268

Plugin API

No significant changes.

3.17.3 (2022-01-12)

REST API

No significant changes.

Plugin API

Bugfixes

  • Exposed adjust_roles in the plugin api. (backported from #9665) #9668

3.17.2 (2022-01-06)

REST API

Bugfixes

  • Fixed PulpImport to correctly save relative to MEDIA_ROOT. (backported from #9660) #9664

Plugin API

No significant changes.

3.17.1 (2021-12-21)

REST API

Bugfixes

  • Fixed migration 0081 to be compatible with custom User models. #9654

Plugin API

No significant changes.

3.17.0 (2021-12-14)

REST API

Features

  • Added a /tasks/purge/ API to do bulk-deletion of old tasks.

    Over time, the database can fill with task-records. This API allows an installation to bulk-remove records based on their completion timestamps.

    NOTE: this endpoint is in tech-preview and may change in backwards incompatible ways in the future. #8554

  • Added a role model to support RBAC and the utility functions assign_role and remove_role.

    The field permissions_assignment of access policies has been renamed to creation_hooks. A compatibility patch has been added to be removed with pulpcore=3.20.

    The permissions argument to creation_hooks has been deprecated to be removed with pulpcore=3.20. #9411

  • Added views to assign model and object level roles to users and groups. #9413

  • Rewrote existing access policies on viewsets to use roles. #9415

  • Added validation to prevent credentials in remote urls. Also added data migration to move credentials out of remote url and into remote username/password fields for existing remotes. #9459

  • Reworked RBAC Content Guards to now use roles. Added new endpoints {list, add, remove}_roles and my_permissions to the RBAC content guard viewset. #9498

  • Content-type and Content-disposition headers are now sent in the AzureStorage.url. #9518

  • SigningService scripts can now access the public key fingerprint using the PULP_SIGNING_KEY_FINGERPRINT environment variable. This allows for more generic scripts, that do not need to "guess" (hardcode) what key they should use. #9532

  • Added object specific endpoints {list,add}_roles, remove_roles and my_permissions to tasks and groups viewsets. #9604

  • Added a reset endpoint to the access policy viewset to revert to the provided default uncustomized access policy. #9606

Bugfixes

  • PulpImporter now unpacks into the task-worker's working directory rather than /tmp. Unpacking large files into /tmp could cause the operation to fail, or even cause stability issues for Pulp instance, due to running /tmp out of space. #8610
  • Missing worker records are now kept in the database for seven days allowing time for post-mortem analysis of them. The user-facing data in the status API remains unmodified. #8988
  • Made Pulp to be fault-tolerant to Redis server connection issues. #8997
  • Cache is now properly invalidated after reclaim disk task. #9215
  • Fixed bug where the content app would stop working after a brief loss of connection to the database. #9276
  • Improved messaging around timeout requests. #9301
  • Updated the distribution validation to properly handle the use of repository / repository_version / publication. #9434
  • Fixed issue with listing repository versions while running orphan cleanup task. #9481
  • Fixed erroneous ordering filters from appearing in HTML views and causing 500 errors when used. #9496
  • Fixed bug where Artifacts were being downloaded even if they were already saved in Pulp. #9542
  • Fixed a bug in pulpcore-worker, where wakeup and cancel signals could be lost due to a race condition. #9549
  • Fixed bug where chunked uploads were being assembled in /tmp. #9550
  • Created a proxy model for Groups to allow using creation_hooks with them. #9588
  • Fixed permission errors on artifact retrieval from object storage when redis caching is enabled. #9595

Improved Documentation

  • Adjusted the RBAC documentation for the roles framework. #9411
  • Added documentation for DB_ENCRYPTION_KEY setting. #9495
  • Fixed the path to uploaded artifacts. #9527

Removals

  • The pulpcore-worker binary no longer accepts the --resource-manager flag. There is no resource manager anymore, so this flag is no longer needed. #9327
  • Removed tech previewed assign_permission and remove_permission endpoints from RBAC content guard viewset. #9498

Misc

Plugin API

Features

  • Added get_objects_for_user to support queryset filtering by roles. Added hooks in AutoAddObjPermsMixin to support auto-assignment of roles.

    Changed the lookup for creation hooks so hooks need to be registered in REGISTERED_CREATION_HOOKS on the model to be used. The signature for creation hooks that are registered must match the exploded version of the dict parameters from the access policy. Unregistered creation hooks are deprecated and support will be dropped in pulpcore 3.20. #9411

  • Made RepositoryAddRemoveContentSerializer available for plugin writers. #9504

  • Added ability to pass headers through the AzureStorage.url. #9518

  • Remote.get_remote_artifact_url now accepts a request parameter. #9554

  • Added initialize_new_version function to Repository model. #9579

  • DownloaderFactory.user_agent() method is now available if plugin needs to generate User-Agent header value to use in their custom (subclasssed) downloader factory. #9591

  • Added ability to use a custom download factory. Remote.get_downloader now accepts a download_factory parameter. #9592

  • Handler._serve_content_artifact method accepts new positional argument request. #9595

  • Added Group model to plugin api. Added RolesMixin to for viewsets to allow managing object roles based on permissions. #9604

  • Added new async sign method asign to the SigningService model. #9615

  • SigningService.sign and SigningService.asign now accepts a env_var parameter that makes it possible to pass environment variables to the signing script. #9621

Bugfixes

  • Include additional information about which AccessPolicy is using deprecated policy features. #9608

3.16.24 (2023-10-30)

REST API

Bugfixes

  • Resolved a sync-time performance regression. #4591

Plugin API

No significant changes.

3.16.23 (2023-10-16)

REST API

Bugfixes

  • Improve performance during export operations. #4551
  • Taught ContentArtifactResource import to cache content results to improve performance. #4564

Plugin API

No significant changes.

3.16.22 (2023-10-05)

REST API

Bugfixes

  • Made sure PulpImport's use of tar.extractall() is safe. #3323

Plugin API

No significant changes.

3.16.21 (2023-09-27)

REST API

Improved Documentation

  • Adds docs on recording and building graphs from the memory data saved by the TASK_DIAGNOSTICS setting. #2329

Misc

Plugin API

No significant changes.

3.16.20 (2023-09-20)

REST API

Bugfixes

  • Removed compression from exports (using gzip level 0). For most users of export functionality it seems to be a poor tradeoff. #4434

Plugin API

No significant changes.

3.16.19 (2023-09-13)

REST API

Bugfixes

  • Taught PulpImport to be more robust in the face of previous failed attempts. #3737

  • Exports now use gzip compression level 1 rather than compression level 9. Exported archives will now be slightly larger, but exports should be much faster. This is considered to be a more optimal balance of space/time for the export operation. #3869

  • Improved the performance when looking up content for repository versions. #3969

  • Taught the Artifact.json of an export to hold minimum-unique-set of Artifact entries.

    In highly-duplicated-content export scenarios, this can mean a significant decrease in export-size, and significant improvement in import-performance. #4159

  • Fix a subtle export bug introduced from the optimizations in #4159. #4210

  • Correctly fixed pulp_rpm-export-edgecase - fix #4210 was incomplete. #4231

  • Ensure the compression level is reliably set properly as per #3869. #4351

  • Ensure non-chunked exports also use gzip compressionlevel=1 #4411

Plugin API

No significant changes.

3.16.18 (2023-08-01)

REST API

Bugfixes

  • Updated the downloader's fetch method to comply with Python 3.11. #4107

Plugin API

No significant changes.

3.16.17 (2023-04-11)

REST API

Bugfixes

  • Downloader will now attempt to keep the filename of the requested URL intact if one exists. #3715

Plugin API

No significant changes.

3.16.16 (2023-02-23)

REST API

Bugfixes

  • Fixed a bug that caused the import machinery to import the same content multiple times in a row. #3075
  • Insured that pulp-export correctly locks repos-being-exported. #3370

Plugin API

No significant changes.

3.16.15 (2022-11-02)

REST API

Bugfixes

  • Fixed the fs exporter to handle the case where there are pre-existing files in the location that FileSystem attempts to export to you get a FileExistsError. #1949
  • Fixed the fs exporter to handle the case where hardlink method was requested but pulp and export locations are in different partitions so can't share the same inode. #3187
  • Another step on closing the deadlock-window when syncing overlapping content. #3284

Plugin API

No significant changes.

3.16.14 (2022-09-13)

REST API

Bugfixes

  • Fixed the value of the Content-Type header returned for .xml.gz files. #2811
  • Another guardrail added around content-stages to address deadlock in a specific usecase. #3192

Plugin API

No significant changes.

3.16.13 (2022-09-01)

REST API

Bugfixes

  • Fixed another rare deadlock for high-concurrency/overlapping-content syncs. #3111

Plugin API

No significant changes.

3.16.12 (2022-08-05)

REST API

Bugfixes

  • Use published relative paths for FS Exporter. #2933
  • Serialized orphan cleanup tasks with respect to each other to prevent them from failing. #3030

Plugin API

No significant changes.

3.16.11 (2022-07-14)

REST API

Bugfixes

  • Improve content app performance on head requests #2924
  • Configured aiohttp to avoid rewriting redirect URLs, as some web servers (e.g. Amazon CloudFront) can be tempermental about the encoding of the URL. #2964

Plugin API

No significant changes.

3.16.10 (2022-06-16)

REST API

Bugfixes

  • Restore multiple-retry logic for PulpImport. #2854

Plugin API

No significant changes.

3.16.9 (2022-06-15)

REST API

Bugfixes

  • Started showing errors when users try to export remote artifacts. #2817

Misc

Plugin API

No significant changes.

3.16.8 (2022-05-10)

REST API

Bugfixes

  • Taught PulpImport to stream imports rather than reading files into memory in one chunk.

    This largely alleviates the memory-pressure that results from importing multiple large repositories in parallel. #2307

  • Fixed does_batch method in sync pipeline to allow waiting on content that is already resolved. #2557

  • Ensure downloader resets file on retry. #2576

  • Taught PulpImport to retry more than once in the event of creation-collisions.

    This fixes a rare import-failure during high-concurrency, high-content-overlap imports. #2589

  • Improved the error message when HTTP proxies reject requests from Pulp. #2654

Plugin API

No significant changes.

3.16.7 (2022-04-12)

REST API

Bugfixes

  • Fixed two instances of Pulp not writing to the task worker's temporary directory. #2061
  • Fixed file descriptior leak during upload. #2087
  • Fixed a bug in pulpcore-worker, where wakeup and cancel signals could be lost due to a race condition. #2144
  • Loosened the version-restrictions on PulpImport to only require X.Y matching. #2269
  • Fixed a (rare) deadlock around bulk_update() during syncs with overlapping content. #2430
  • Fixed a bug where notifications to workers may go unnoticed. This may lead to idle workers while there are tasks waiting. #2506

Plugin API

No significant changes.

3.16.6 (2022-03-25)

REST API

Bugfixes

  • Reduced memory usage during tasks like sync by holding fewer objects in-memory unnecessarily. #2069
  • Fixes duplicate key error Key (content_artifact_id, remote_id) when creating RemoteArtifacts during syncs in pulp_container and possibly other plugins. #2381
  • Declared proper dependency on user model in migration 0040. #2403
  • Fixed a rare deadlock when sync'ing overlapping content in high-concurrency envs. #2420
  • Fixed secure proxy support by updating aiohttp version to ~=3.8.1. #2423

Plugin API

Bugfixes

  • Adjusted the default size of the queues between pipelines to be 1 instead of 1000. The batchers in the stage will still accumulate up to 500 (by default) items so batching is still in-effect there where it matters. #2069

3.16.5 (2022-03-17)

REST API

Bugfixes

  • Fix delete repository version causing "duplicate key value violates unique constraint" error. #2047

  • Fixed migration 0064_add_new_style_task_columns to purge extraneous ReservedResource and TaskReservedResource entries, which could block sync and publish