Story #4172
closedRemove duplicate tags from repository during sync
100%
Description
The docker plugin has repository version uniqueness constraints for Tags. For example the Tag with name "latest" points to a Manifest List. Another Tag with name "latest" (pointing to another Manifest List) cannot be added to the repository version while the first "latest" tag remains. Note: This repository version could have a "latest" that points to a manifest instead of a manifest list.
At this point, we don't think this uniqueness constraint can exist in the db, so we need to enforce the constraint at sync time (and later during add/remove.
During sync, before the new tags are added to the repository version, corresponding tags that are already in the repository version should be removed.
Heres an example:
RepositoryVersion1 contains a tag, "latest" which points to ManifestList1. A sync retrieves a new Tag "latest" that points to ManifestList2. Before "latest"-> ManifestList2 is added to the repository version, "latest"->ManifestList1 must be removed.
For implementation, this probably should be a new Stage, which could be the last item in the pipeline. (Add/remove stages are added outside of the plugin-defined pipeline.)
Related issues
Updated by ipanova@redhat.com about 6 years ago
- Groomed changed from No to Yes
- Sprint Candidate changed from No to Yes
Updated by amacdona@redhat.com about 6 years ago
- Related to Story #3934: As a plugin writer, I can have a stage that removes duplicates added
Updated by amacdona@redhat.com about 6 years ago
- Related to deleted (Story #3934: As a plugin writer, I can have a stage that removes duplicates)
Updated by amacdona@redhat.com about 6 years ago
- Blocked by Story #3934: As a plugin writer, I can have a stage that removes duplicates added
Updated by amacdona@redhat.com about 6 years ago
- Status changed from NEW to ASSIGNED
- Assignee set to amacdona@redhat.com
Added by amacdona@redhat.com about 6 years ago
Added by amacdona@redhat.com about 6 years ago
Revision f871b7d5 | View on GitHub
Distribute tags according to requested media type
Return the artifacts associated with a tag with type failover. Try manifest list first, then manifest schema 2. If both fail, log the warning and return a 404. This provides a convinient location for an on-the-fly schema converter.
These changes are necessary to use the split-tag models for distribution, so they will be merged as a part of #4172.
Added by amacdona@redhat.com about 6 years ago
Revision 7f79cd73 | View on GitHub
Remove non-unique tag names during sync
When syncing, if a tag name references a different manifest/manifest list it must be removed from the repo. To do this simply, it was more convinient to split the Tag model into ManifestTag and ManifestListTag.
Added by amacdona@redhat.com about 6 years ago
Revision f871b7d5 | View on GitHub
Distribute tags according to requested media type
Return the artifacts associated with a tag with type failover. Try manifest list first, then manifest schema 2. If both fail, log the warning and return a 404. This provides a convinient location for an on-the-fly schema converter.
These changes are necessary to use the split-tag models for distribution, so they will be merged as a part of #4172.
Added by amacdona@redhat.com about 6 years ago
Revision 7f79cd73 | View on GitHub
Remove non-unique tag names during sync
When syncing, if a tag name references a different manifest/manifest list it must be removed from the repo. To do this simply, it was more convinient to split the Tag model into ManifestTag and ManifestListTag.
Added by amacdona@redhat.com about 6 years ago
Revision f871b7d5 | View on GitHub
Distribute tags according to requested media type
Return the artifacts associated with a tag with type failover. Try manifest list first, then manifest schema 2. If both fail, log the warning and return a 404. This provides a convinient location for an on-the-fly schema converter.
These changes are necessary to use the split-tag models for distribution, so they will be merged as a part of #4172.
Added by amacdona@redhat.com about 6 years ago
Revision 7f79cd73 | View on GitHub
Remove non-unique tag names during sync
When syncing, if a tag name references a different manifest/manifest list it must be removed from the repo. To do this simply, it was more convinient to split the Tag model into ManifestTag and ManifestListTag.
Added by amacdona@redhat.com about 6 years ago
Revision f871b7d5 | View on GitHub
Distribute tags according to requested media type
Return the artifacts associated with a tag with type failover. Try manifest list first, then manifest schema 2. If both fail, log the warning and return a 404. This provides a convinient location for an on-the-fly schema converter.
These changes are necessary to use the split-tag models for distribution, so they will be merged as a part of #4172.
Updated by amacdona@redhat.com about 6 years ago
- Status changed from ASSIGNED to MODIFIED
- % Done changed from 0 to 100
Applied in changeset 7f79cd73ee9eee532fa9a7adb816fd7abc6c19dc.
Updated by amacdona@redhat.com about 6 years ago
Updated by bherring almost 6 years ago
- Copied to Test #4299: Remove duplicate tags from repository during sync added
Updated by ipanova@redhat.com about 5 years ago
- Project changed from Docker Support to Container Support
Updated by bmbouter about 5 years ago
- Status changed from MODIFIED to CLOSED - CURRENTRELEASE
Remove non-unique tag names during sync
When syncing, if a tag name references a different manifest/manifest list it must be removed from the repo. To do this simply, it was more convinient to split the Tag model into ManifestTag and ManifestListTag.
https://pulp.plan.io/issues/4172 fixes #4172