Project

Profile

Help

Story #6875

Updated by dalley almost 4 years ago

Bandersnatch is an officially-blessed tool for mirroring Python repositories developed by the PyPA organization.    It has fairly widespread usage. 

 https://github.com/pypa/bandersnatch 

 
 https://bandersnatch.readthedocs.io 

 Currently we're attempting to re-implement several features of bandersnatch such as package whitelists and blacklists, full PyPI mirroring support, and some version of "keep only configured on the latest releases" -- all of PythonRemote as JSON.    This doesn't seem ideal to me from a UX perspective.    Configuring Pulp this way is quite difficult compared to editing a config file like with bandersnatch. 

 https://bandersnatch.readthedocs.io/en/latest/filtering_configuration.html 

 Since there's already a tool which Bandersnatch already supports, with some degree of polish has tread this ground and testing and additional minor features such as regex filtering. 

 It is widely used, it would be ideal excellent if we users could leverage Bandersnatch's use Pulp with their existing support for these features by using Bandersnatch as configs. 

 There are different ways we could go about this, broadly speaking: 

 1) Create a library which acts as PythonRemote from a bandersnatch config file - continue storing all of the frontend sync settings on the remote, but provide some API for users to Pulp, create / update their PythonRemote by uploading the bandersnatch config file. 
 2) Don't store anything directly on the PythonRemote, and instead have them parsed from the config file at sync time. 

 1 is probably more idiomatic with Pulp's overall workflows, and is probably the only best way in which to go.    2 is potentially simpler.    Either way, we interact with PyPI.    This would might be beneficial able to both ourselves and to leverage existing bandersnatch code for the Python community, as it would increase the testing and quality parsing of the Bandersnatch upstream as issues are found and fixed. 

 An issue has been this config file upstream to track the changes that are necessary within Bandersnatch to support this kind of usage. 

 https://github.com/pypa/bandersnatch/issues/548 

 This issue will format, which would be used to track the efforts needed within Pulp to integrate with Bandersnatch. nice.

Back