Project

Profile

Help

Issue #8305

Updated by dalley about 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.

Back