Project

Profile

Help

Story #5008

closed

As a user, I can enforce content specific uniqueness constaints in a repo version

Added by ttereshc over 3 years ago. Updated almost 3 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
Category:
-
Sprint/Milestone:
Start date:
Due date:
% Done:

100%

Estimated time:
Platform Release:
Groomed:
Yes
Sprint Candidate:
Yes
Tags:
Sprint:
Sprint 60
Quarter:

Description

RemoveDuplicates stage provides the opportunity to enforce uniqueness constraints for content at the sync time.
The duplicate problem can be encountered at any time content is added to a repository, not only at sync time.
E.g. Content was uploaded, or content was synced as a part of other repo, and now it's added/copied to a new repository.

It would be good if some check/validation happened for any added content, e.g. at this stage

Examples for where uniqueness might be needed in a repo version:
- only one content unit with a certain characteristics should be present in a repo (only one advisory with the same id, only one module_defaults for a module, etc)

This issue was discussed on this thread: https://www.redhat.com/archives/pulp-dev/2019-May/msg00061.html

Solution

Plugins:
On the plugin content model define a repo_key - one or more fields which must be unique within a repo version.

Pulpcore:
Check uniqueness of the repo_key for each added content type at the repository version creation time https://github.com/pulp/pulpcore/blob/aef490e201f89fc005ba3239fda3a79c05e28fd7/pulpcore/app/models/repository.py#L343.
Whether it's sync, copy, or upload, repo_key uniqueness will be ensured if core/plugin devs use with RepositoryVersion.create(...) context manager.


Related issues

Related to File Support - Task #4028: Prevent duplicate files in repositoriesCLOSED - CURRENTRELEASEbmbouter

Actions
Related to RPM Support - Story #4898: As a user, no "duplicated" content is present in a repo versionCLOSED - CURRENTRELEASEttereshc

Actions
Actions #1

Updated by ttereshc over 3 years ago

  • Description updated (diff)
Actions #2

Updated by ttereshc over 3 years ago

  • Related to Task #4028: Prevent duplicate files in repositories added
Actions #3

Updated by ttereshc over 3 years ago

  • Related to Story #4898: As a user, no "duplicated" content is present in a repo version added
Actions #4

Updated by amacdona@redhat.com over 3 years ago

  • Triaged changed from No to Yes
Actions #5

Updated by ttereshc over 3 years ago

  • Description updated (diff)
Actions #6

Updated by ttereshc over 3 years ago

  • Description updated (diff)
Actions #7

Updated by amacdona@redhat.com over 3 years ago

  • Sprint set to Sprint 56
Actions #8

Updated by bmbouter over 3 years ago

This all looks good. Should we convert this to a story? To me in the changelog this would make the most sense as a new feature in the pulpcore-plugin package. What do you think?

Actions #9

Updated by ttereshc over 3 years ago

  • Tracker changed from Issue to Story
  • Subject changed from No way to enforce content specific uniqueness constaints in a repo version to As a user, I can enforce content specific uniqueness constaints in a repo version
  • % Done set to 0
Actions #10

Updated by bmbouter over 3 years ago

  • Groomed changed from No to Yes
  • Sprint Candidate changed from No to Yes

This looks good to me. Thank you for recapping ttereshc!

Actions #11

Updated by rchan over 3 years ago

  • Sprint changed from Sprint 56 to Sprint 57
Actions #12

Updated by rchan over 3 years ago

  • Sprint changed from Sprint 57 to Sprint 58
Actions #13

Updated by bmbouter about 3 years ago

  • Status changed from NEW to ASSIGNED
  • Assignee set to bmbouter
Actions #14

Updated by rchan about 3 years ago

  • Sprint changed from Sprint 58 to Sprint 59
Actions #15

Updated by daviddavis about 3 years ago

  • Sprint/Milestone set to 3.0.0
Actions #16

Updated by rchan about 3 years ago

  • Sprint changed from Sprint 59 to Sprint 60
Actions #17

Updated by bmbouter about 3 years ago

  • Status changed from ASSIGNED to POST

Added by bmbouter about 3 years ago

Revision b41a0923

Add repo_key support for add_content

The Content model now supports a repo_key attribute which defaults to (). Plugin writers can specify this, and the tuple field names will automatically replace another unit of the same type with these field names.

Required PR: https://github.com/pulp/pulp_file/pull/290

https://pulp.plan.io/issues/5008 closes #5008

Actions #18

Updated by bmbouter about 3 years ago

  • Status changed from POST to MODIFIED
  • % Done changed from 0 to 100
Actions #19

Updated by bmbouter almost 3 years ago

  • Status changed from MODIFIED to CLOSED - CURRENTRELEASE

Also available in: Atom PDF