Refactor xapi-storage-script to use modules #6191
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
bind
function in xapi-storage-script has lots of implementaions all over the place, making it hard to maintain. Use module abstractions to separate different storage functions.The tricky bit of this is the need to pass
version
andvolume_script_dir
into each storage function calls, and these two variables are determined at runtime. Hence functors are used for this purpose, once thevolume_script_dir
is determined whenbind
is called, pass this as inside theRuntimeMeta
module to the relevant implementations. Theversion
global variable, however, is populated whenQuery.query
is called, so create an alias in theRuntimeMeta
module so that it can be used in the storage function implementations.