-
Notifications
You must be signed in to change notification settings - Fork 292
Refactor xapi-storage-script to use modules #6191
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Vincent-lau
merged 1 commit into
xapi-project:master
from
Vincent-lau:private/shul2/storage-script-modules
Jan 31, 2025
Merged
Refactor xapi-storage-script to use modules #6191
Vincent-lau
merged 1 commit into
xapi-project:master
from
Vincent-lau:private/shul2/storage-script-modules
Jan 31, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
psafont
reviewed
Dec 20, 2024
25fcecf
to
d779a25
Compare
d779a25
to
35948a7
Compare
contificate
reviewed
Jan 21, 2025
psafont
approved these changes
Jan 21, 2025
changlei-li
approved these changes
Jan 22, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The original bind function is too long. I like this refactor.
35948a7
to
e44677c
Compare
contificate
approved these changes
Jan 23, 2025
e44677c
to
136854e
Compare
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` and `volume_script_dir` into each storage function calls, and these two variables are determined at runtime. Hence functors are used for this purpose, once the `volume_script_dir` is determined when `bind` is called, pass this as inside the `RuntimeMeta` module to the relevant implementations. The `version` ref cell is populated when `Query.query` is called, which should be the first call of each plugin. Once it is populated, it will then be used by different plugin functions. We do need a separate version for each plugin though, so create a new module (which contains a new version) each time bind is called, just as before. Signed-off-by: Vincent Liu <shuntian.liu2@cloud.com>
136854e
to
0b47e27
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.