pub struct Volume {
pub capacity_bytes: i64,
pub volume_id: String,
pub volume_context: BTreeMap<String, String>,
pub content_source: Option<VolumeContentSource>,
pub accessible_topology: Vec<Topology>,
}Expand description
Information about a specific volume.
Fields§
§capacity_bytes: i64The capacity of the volume in bytes. This field is OPTIONAL. If not set (value of 0), it indicates that the capacity of the volume is unknown (e.g., NFS share). The value of this field MUST NOT be negative.
volume_id: StringThe identifier for this volume, generated by the plugin. This field is REQUIRED. This field MUST contain enough information to uniquely identify this specific volume vs all other volumes supported by this plugin. This field SHALL be used by the CO in subsequent calls to refer to this volume. The SP is NOT responsible for global uniqueness of volume_id across multiple SPs.
volume_context: BTreeMap<String, String>Opaque static properties of the volume. SP MAY use this field to
ensure subsequent volume validation and publishing calls have
contextual information.
The contents of this field SHALL be opaque to a CO.
The contents of this field SHALL NOT be mutable.
The contents of this field SHALL be safe for the CO to cache.
The contents of this field SHOULD NOT contain sensitive
information.
The contents of this field SHOULD NOT be used for uniquely
identifying a volume. The volume_id alone SHOULD be sufficient to
identify the volume.
A volume uniquely identified by volume_id SHALL always report the
same volume_context.
This field is OPTIONAL and when present MUST be passed to volume
validation and publishing calls.
content_source: Option<VolumeContentSource>If specified, indicates that the volume is not empty and is pre-populated with data from the specified source. This field is OPTIONAL.
accessible_topology: Vec<Topology>Specifies where (regions, zones, racks, etc.) the provisioned volume is accessible from. A plugin that returns this field MUST also set the VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. An SP MAY specify multiple topologies to indicate the volume is accessible from multiple locations. COs MAY use this information along with the topology information returned by NodeGetInfo to ensure that a given volume is accessible from a given node when scheduling workloads. This field is OPTIONAL. If it is not specified, the CO MAY assume the volume is equally accessible from all nodes in the cluster and MAY schedule workloads referencing the volume on any available node.
Example 1: accessible_topology = {“region”: “R1”, “zone”: “Z2”} Indicates a volume accessible only from the “region” “R1” and the “zone” “Z2”.
Example 2: accessible_topology = {“region”: “R1”, “zone”: “Z2”}, {“region”: “R1”, “zone”: “Z3”} Indicates a volume accessible from both “zone” “Z2” and “zone” “Z3” in the “region” “R1”.
Trait Implementations§
Source§impl Message for Volume
impl Message for Volume
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode<B>(buf: B) -> Result<Self, DecodeError>
fn decode<B>(buf: B) -> Result<Self, DecodeError>
Source§fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
Source§fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
self. Read moreSource§fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
self.impl StructuralPartialEq for Volume
Auto Trait Implementations§
impl Freeze for Volume
impl RefUnwindSafe for Volume
impl Send for Volume
impl Sync for Volume
impl Unpin for Volume
impl UnwindSafe for Volume
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request