Plugin adjustments for 3.15

Dear plugin writers,
with the release of pulpcore 3.15 happening at the moment, a lot of big changes are coming about that plugins need to adjust to. Let me try to collect them here, but feel free to comment if you can find more.

  1. JSONField: Plugins that used this database field, should update the import path to django.db.models.JSONField.
  2. Orphan cleanup is able to run concurrently with other tasks now. So when ever a plugin is handling Content or Artifacts that are not secured as part of a repository version, it should call touch() on them to update the timestamp of interest.
  3. pulpcore now supports only python 3.8 and higher. It is advisable to adjust the metadata in accordingly, once the plugin cannot be installed with older pulpcore versions anymore.
  4. With pulpcore switching from Django 2 to Django 3, ORM calls (to the database) in async code are no longer save. This means you need to wrap all such code with sync_to_async to delegate it to a thread pool. If you use the ProgressReport, its new async interface will help you in that case. A sample PR can be seen in [0].

Please accept our apologies for the inconvenience.

[0] Make async adjustments for new Django version by quba42 · Pull Request #337 · pulp/pulp_deb · GitHub