Issue #8305
Updated by dalley over 3 years ago
* Create a repository and on_demand remote, and sync them.
* Delete the remote
The deletion of the Remote deletes the RemoteArtifacts, leaving behind ContentArtifact attached to neither Artifacts nor Remotes, making them effectively corrupted and unpublishable.
~~~ python
# create repository, remote
remote = remote_api.create(gen_file_remote(policy='on_demand'))
repo = repo_api.create(gen_repo())
# sync the repository
repository_sync_data = RepositorySyncURL(remote=remote.pulp_href)
sync_response = repo_api.sync(repo.pulp_href, repository_sync_data)
task = monitor_task(sync_response.task)
# delete the remote
monitor_task(remote_api.delete(remote.pulp_href).task)
# ^---- problem occurs here, now RemoteArtifacts deleted, now ContentArtifact is broken
publish_response = publications_api.create({"repository_version": task.created_resources[0]})
monitor_task(publish_response.task) # boom publish failure
~~~
This is more pernicious because content units can move throughout repositories, and if the remote is ever deleted, every repo can be broken at once with no safeguards.