-
Notifications
You must be signed in to change notification settings - Fork 2k
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
CSI: volume creation #10165
CSI: volume creation #10165
Conversation
c10f708
to
f29399a
Compare
f29399a
to
eade3e0
Compare
bbb9699
to
d84a4ce
Compare
2fe11bd
to
d536bfb
Compare
d536bfb
to
7a73906
Compare
3bbaf8b
to
e665757
Compare
e665757
to
3acde0d
Compare
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.
lgtm! (I only reviewed a subset of the children prs)
Note that unset proto fields for volume create should be nil. The CSI spec handles empty fields and nil fields in the protobuf differently, which may result in validation failures for creating volumes with no prior source (and does in testing with the AWS EBS plugin). Refactor the `CreateVolumeRequest` mapping to the protobuf in the plugin client to avoid this bug.
This commit includes a new test client that allows overriding the RPC protocols. Only the RPCs that are passed in are registered, which lets you implement a mock RPC in the server tests. This commit includes an example of this for the ClientCSI RPC server.
This commit implements the RPC handlers on the client that talk to the CSI plugins on that client for the Create/Delete/List RPC.
The CSI specification requires that we validate a list of `Capability` (access mode + accessibility) when we create volume, but the existing volume registration workflow incorrectly validates a single capability. The specific capability required by a volume claim is checked at the time we make the claim, so remove the check for `AttachmentMode`/`AcccessMode`.
In order to support new controller RPCs, we need to fingerprint volume capabilities in more detail and perform controller RPCs only when the specific capability is present. This fixes a bug in Ceph support where the plugin can only suport create/delete but we assume that it also supports attach/detach.
The HTTP test to create CSI volumes depends on having a controller plugin to talk to, but the test was using a node-only plugin, which allows it to silently ignore the missing controller.
Add new commands for creating, deleting, and listing external storage volumes. Includes HCL decoding update for volume spec so that we can humanize capacity bytes input values.
3acde0d
to
282d54b
Compare
I'm going to lock this pull request because it has been closed for 120 days ⏳. This helps our maintainers find and focus on the active contributions. |
CSI volume creation workflow for #8212. The snapshot and resize workflows will be implemented in separate PRs once this is complete.
Consists of the contents of these PRs, previously reviewed and merged:
I've rebased these a bit to squash redundant commits on the same content and fixup doc navigation updates, so that we have a git-bisectable result once this PR is merged. But no content has changed other than the docs navigation file.