Issue #7291

Updated by ttereshc 3 months ago

When combining content to make a new repository-version, there is a specific edge-case that results in an advisory that exists in both places to be merged into a single new advisory. In this case, current pulp_rpm code "reuses" the UpdateCollections from the previous advisory edvisory in such a way that tha they 'belong to' both the previous and the newly-merged/created advisory.

This is a different usage-pattern than that used for any other sub-object of an advisory. It also prevents us from linking an UpdateCollection directly (and only) to its 'owning' advisory, which is desirable for a number of reasons (see #5740 and #7195 for examples)

We need to:
* teach merge_advisories() to make a deep copy of the 'previous_advisory' collections and their packages
* point the new copies at the new advisory
* build a data-migration to find and fix existing instances of an UpdateCollection being linked to multiple advisories