Let’s take a look at the main updates and enhancements as part of this release.

This release also includes a plethora of bugfixes as well as some nice enhancements to Pulpcore and the Plugin API. For a full overview of changes, check out the changlog.

Support added for automatic publishing and distributing #7626

Functionality has been added to Pulpcore so that when the content of a repository is updated, the repository can be automatically published and redistributed. This feature paves the way for future content plugin releases to add support for automatically publishing or distributing the new repository version after it has been created. Check the release notes of upcoming content plugins to see when this feature becomes supported.

New Checksum validation steps

Pulp can prohibit or allow checksums by setting the ALLOWED_CONTENT_CHECKSUMS setting.

As part of this release, a number of validation steps have been added to help to ensure that you can debug and manage content checksums that are synched as part of the on-demand sync process.

New documenation has been also added for the ALLOWED_CONTENT_CHECKSUMS setting.

A new warning has been added to the on-demand sync process to check if remote artifacts are detected with checksums that do not correspond with the ALLOWED_CONTENT_CHECKSUMS. #7985

During a sync of on-demand content, a new check is performed and throws an error if forbidden checksums are detected. #8423

As part of #7989 more enhancements updates were made to handle the exception that gets raised on the client side.

Increased flexibility with deleting repository versions #8454

With this release, it is now possible to delete the original repository version (RepoVersion 0). As long as you have more than one repository version, you can now delete RepoVersion 0.

Breaking changes and behavior changes

PulpExporter: Update and Delete become asynchronous #7438

The Update and Delete endpoints of PulpExporter have been changed to become asynchronous. This change provides proper locking on resources.

Note that this is a breaking change.

Deprecation warnings added to log level WARNING. #8499

In previous versions of Pulp, no one could see deprecation warnings for features. With this release, if the log level is set to WARNING, you’ll now find deprecation warnings included in your logs.

You can disable this by adjusting the log level of pulpcore.deprecation.

Updates to the Plugin API

This release includes the following updates to the Plugin API.

New callback method for autopublishing #7626

A new callback method on_new_version() has been added to Repository. This runs when a new repository version has been created. The addition of this method paves the way for future plugin releases to add support for automatically publishing or distributing the new repository version after it has been created.

New logging options for DigestValidationError and SizeValidationError #8357

A url option has been added as a possible argument to DigestValidationError and SizeValidationError exceptions, so that you can better locate the url of the requested files.

A new Distribution MasterModel #8384

This release provides a new MasterModel pulpcore.plugin.models.Distribution that replaces the BaseDistribution pulpcore.plugin.models.BaseDistribution model. You will have to define a migration to move your data from pulpcore.plugin.models.BaseDistribution to pulpcore.plugin.models.Distribution. See the pulp_file migration 0009 as a reference example.#8385

This new model now contains the repository, repository_version, and publication fields that are supposed to move off of the detail models where they are located with pulpcore.plugin.models.BaseDistribution.

  • A new serializer pulpcore.plugin.serializer.DistributionSerializer has been added to use with pulpcore.plugin.models.Distribution.
  • The viewset pulpcore.plugin.viewset.DistributionViewSet replaces the deprecated pulpcore.plugin.viewset.BaseDistributionViewSet.
  • The new pulpcore.plugin.viewset.NewDistributionFilter filter pairs with the Distribution model.

Object deprecations as part of this change

BaseDistribution object Replaced by
pulpcore.plugin.models.BaseDistribution pulpcore.plugin.models.Distribution
pulpcore.plugin.viewset.BaseDistributionViewSet pulpcore.plugin.viewset.DistributionViewSet
pulpcore.plugin.serializer.BaseDistributionSerializer pulpcore.plugin.serializer.DistributionSerializer
pulpcore.plugin.serializer.PublicationDistributionSerializer pulpcore.plugin.serializer.DistributionSerializer
pulpcore.plugin.serializer.RepositoryVersionDistributionSerializer Define the publication field directly on your detail distribution object.
pulpcore.plugin.viewset.DistributionFilter pulpcore.plugin.viewset.NewDistributionFilter

Checksum type enforcement for downloader

As part of this release, checksum filtering in Remote.get_downloader has been removed and checksum type enforcement has been added to BaseDownloader itself.

#8435

New Dispatch API #8496

A new pulpcore.plugin.tasking.dispatch endpoint has been added . This replaces the pulpcore.plugin.tasking.enqueue_with_reservation endpoint.

The functionality is the same except for the following:

  • It returns a pulpcore.plugin.models.Task instead of an RQ object
  • It does not support the options keyword argument

Additionally the pulpcore.plugin.viewsets.OperationPostponedResponse has been updated to support both the dispatch and enqueue_with_reservation endpoints.

Removals

Checksum type filtering has been removed from pulpcore.plugin.models.Remote.get_downloader and pulpcore.plugin.stages.DeclarativeArtifact.download#8435.

Plugin API Deprecations

The usage of non-JSON serializable types of args and kwargs to tasks is deprecated. Future releases of pulpcore may discontinue accepting complex argument types. Note, UUID objects are not JSON serializable.

A deprecated warning is logged if a non-JSON serializable is used#8505.

Tasking object enqueue_with_reservation deprecation #8496

As part of a future move away from RQ, the pulpcore.plugin.tasking.enqueue_with_reservation object has been deprecated. Instead use the pulpcore.plugin.tasking.dispatch interface.

If you have any comments or questions about anything you read here, we’d be happy to hear from you at pulp-list@redhat.com.