spec
spec copied to clipboard
ValidateVolumeCapabilities missing capabilities behavior
The ValidateVolumeCapabilities specification says the following:
NOTE: Older plugins will parse but likely not "process" newer fields that MAY be present in capability-validation messages (and sub-messages) sent by a CO that is communicating using a newer, backwards-compatible version of the CSI protobufs. Therefore, the CO SHALL reconcile successful capability-validation responses by comparing the validated capabilities with those that it had originally requested.
The Nomad team has had a report of a plugin (Cinder) that does not return the full struct for the capabilities that it supports (in this case, the access_type). Our interpretation of the above is that without an access_type, we can't assume that the plugin supports with BlockVolume or MountVolume and we're rejecting the request. If we were to accept the fields the plugin does not return in the validation message, we'd potentially run into backwards compatibility issues with plugins and newer fields as implied by the spec.
But given that the plugin works with other CO's, we're likely misunderstanding this part of the spec. Can we get some guidance here as to the expected "reconciling" behavior by the CO?