Story #8250
Updated by ttereshc almost 4 years ago
### Motivation There are situations when Pulp raises an `AdvisoryConflict` AdvisoryConflict exception and fails a sync or copy task. In such cases, manual resolution is needed. It's neither easy, nor straightforward in some cases for user to resolve it. **Situation 1** Updated date and version are the same but pkglists differ (and one is not a subset or superset of the other). E.g. It's likely a mistake in one of the pkglists. Manual resolution: - look at both and decide which one to keep - if the "bad" one is in Pulp, remove it from Pulp (remove from every repo version and run orphan cleanup) - if the "bad" one is in a remote source, contact remote source and ask them to fix it **Situation 2** Updated dates are different but pkglists have no intersection at all. E.g. It's either and attempt to combine content from incompatible repos (RHEL6-main and RHEL7 debuginfo), or someone created a completely different advisory with already used id. Manual resolution: - look at both and decide what's wrong - maybe pick one if it works for user's case (pick one = either remove from Pulp or do not add a remote one) - maybe change what is added to a repo if it was a mistake (e.g. to combine RHEL6-main and RHEL7-debuginfo) ### Proposed solution Since Pulp cannot safely resolve conflicts in the situations described earlier, any automatic resolution would be at user's own risk. Introduce a global configuration `ALLOW_UNSAFE_ADVISORY_CONFLICT_RESOLUTION`, which defaults to `False`. When it is set to `True`: True: - for Situation 1, Pulp will produce a new advisory content unit with merged pkglists - for Situation 2, Pulp will pick a newer one