Merge lp:~allenap/maas/tftp-offload into lp:~maas-committers/maas/trunk
Status: | Merged |
---|---|
Approved by: | Gavin Panella |
Approved revision: | no longer in the source branch. |
Merged at revision: | 5599 |
Proposed branch: | lp:~allenap/maas/tftp-offload |
Merge into: | lp:~maas-committers/maas/trunk |
Diff against target: |
284 lines (+244/-0) 3 files modified
src/provisioningserver/plugin.py (+18/-0) src/provisioningserver/rackdservices/tftp_offload.py (+207/-0) src/provisioningserver/tests/test_plugin.py (+19/-0) |
To merge this branch: | bzr merge lp:~allenap/maas/tftp-offload |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mike Pontillo (community) | Approve | ||
Review via email: mp+312146@code.launchpad.net |
Commit message
Implement *experimental* TFTP offload support.
Description of the change
In my own time I've been writing a TFTP server in Rust. This small change to MAAS allows it to take up TFTP duties for MAAS. I will publish the server's code imminently. Though it's far from finished, the performance, predictably, already far outstrips MAAS's in-process TFTP server. This will be important when putting MAAS on more constrained hardware, and may improve the experience for all: that's what this experiment is intended to discover.
The change in the proposal is as self-contained as possible. The offload support won't even be imported unless it's explicitly requested, and it will be easy to remove this support at a later date. It is not documented in any publicly visible place so we're not making any promises about supporting this.
Once this change has landed and in the PPA I will publish some instructions for getting it working with the external offload process.
This looks nice, and very valuable since we know the Python TFTP code causes memory leaks in MAAS long-term (on the order of months?). I'm tempted to just say land it, since it's effectively guarded from accidental use.
However, I'll say 'Needs Information', because I think this should be documented (in docs/) before it lands. (Preferably with a link to your rust-based reference implementation showing how to use it.)
My other worry is, given that this is an experimental project, it will be prone to bit rot unless we have CI tests for it. Should we commit to ensuring it is properly tested before we land it in trunk? (Maybe just keep it as a private branch until then.)
Also, it might be good if tftp_offload.py had comments with a reference to where the code is enabled in `plugin.py`, plus instructions on how to enable it.
A couple more comments below.