What problem does this feature solve? Please describe.
Currently, the way installs are updated is incremental. Failures or errors in the midst of installing collections can result in partial or incomplete installs.
This can fail in multiple ways including:
failure between installing collections, resulting in only a subset of the requested list of collections being installed
failure in the midst of extract/installing a repository, resulting in a partial and incomplete install of that content. ie, only half of the files in a role being installed.
Proposed Solution
Describe the solution you'd like
A clear and concise description of what you want to happen. Add any considered drawbacks.
There are two main parts of resolving the issue:
Keeping track of the requested installs and the state of the install of each collection/repo as it is being installed, and on failure, being able to determine what is incomplete.
Once the status of the individual installs are tracked, then next step would be supporting rolling back partially installed transactions that fails.
This is collection/repo granularity
Making collection archive extraction to the file system atomic.
ie, installing to a shadow dir and then mv'ing the content into final path atomically.
This is to prevent ansible from potentially using partially installed content (if a ansible-playbook run reads the content dir while mazer is in the process of changing it).
Also to prevent potential file races.
And to prevent a fatal error in mazer from leaving the content path in an incomplete state.
Alternatives
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Possibly cross process locking for the case of ansible and mazer running concurrently.
Quite likely that may be required in addition to the above requirements.
Feature Request
Use Case
What problem does this feature solve? Please describe. Currently, the way installs are updated is incremental. Failures or errors in the midst of installing collections can result in partial or incomplete installs.
This can fail in multiple ways including:
Proposed Solution
Describe the solution you'd like A clear and concise description of what you want to happen. Add any considered drawbacks.
There are two main parts of resolving the issue:
Once the status of the individual installs are tracked, then next step would be supporting rolling back partially installed transactions that fails.
This is collection/repo granularity
ie, installing to a shadow dir and then mv'ing the content into final path atomically. This is to prevent ansible from potentially using partially installed content (if a ansible-playbook run reads the content dir while mazer is in the process of changing it).
Also to prevent potential file races.
And to prevent a fatal error in mazer from leaving the content path in an incomplete state.
Alternatives
Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.
Possibly cross process locking for the case of ansible and mazer running concurrently. Quite likely that may be required in addition to the above requirements.
Implementation
Unknown