# Pulp Ansible 'deprecated' implementation review meeting ## Goal To share info on what is implemented today so we can resolve the issues. ## Current issues 1. You can modify `deprecated` values without creating a new repository version. This creates two subproblems: 1. You will not be able to import/export correctly because import/export expects once a repo version is exported, it's never changed again. 2. Rollback cannot work reliably for users 2. This implementation technically works, but is inefficient because you have to make more AnsibleCollectionDeprecated records each time. ## Background The model: https://github.com/pulp/pulp_ansible/blob/4b3d63f14dd85b9bfd689074defb99a23ee72f31/pulp_ansible/app/models.py#L281-L292 Usage in pulp_ansible today: https://github.com/pulp/pulp_ansible/search?q=AnsibleCollectionDeprecated The original PR that brought in this work: https://github.com/pulp/pulp_ansible/pull/392/files ## Discussion * deprecated exposed in Galaxy V3 viewset in pulp_ansible. *also* in _ui in galaxy_ng * ## Options * make deprecated create new repo versions anytime there are changes * issue: pulpcore prevents you from making two repo versions with the exact same content sets() * put deprecated data into publications * issue: pulpcore does not export/import these today * make deprecated data content * issue: dealing with extra content items for repo versions * add deprecated field to collection version * make it part of the natural key but not part of the repo key * issue: versions could potentially be represented twice (one for deprecated and one for undeprecated) * issue: not very extensible for adding more metadata fields ## Obstacle * Collection x CollectionVersion * Collection.deprecated = all(CollectionVersion.deprecated)? * colA = Collection(name=pulp_installer, namespace=pulp, deprecated=True) colB = Collection(name=pulp_installer, namespace=pulp, deprecated=False) being 2 different collections, how to deal with the Collection x CollectionVersion relationship * Want a solution which can handle other metadata fields