use crate::models;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct Volume {
#[serde(rename = "@odata.context")]
#[serde(skip_deserializing)]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub odata_context: Option<models::odata_v4::Context>,
#[serde(rename = "@odata.etag")]
#[serde(skip_deserializing)]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub odata_etag: Option<models::odata_v4::Etag>,
#[serde(rename = "@odata.id")]
#[serde(skip_deserializing)]
pub odata_id: models::odata_v4::Id,
#[serde(rename = "@odata.type")]
#[serde(skip_deserializing)]
#[derivative(Default(value = "models::odata_v4::Type(\"#Volume.v1_8_0.Volume\".to_string())"))]
pub odata_type: models::odata_v4::Type,
#[serde(rename = "AccessCapabilities")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access_capabilities: Option<Vec<models::data_storage_lo_s_capabilities::StorageAccessCapability>>,
#[serde(rename = "Actions")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub actions: Option<models::volume::v1_8_0::Actions>,
#[serde(rename = "AllocatedPools")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allocated_pools: Option<models::odata_v4::IdRef>,
#[serde(rename = "BlockSizeBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub block_size_bytes: Option<i64>,
#[serde(rename = "Capacity")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capacity: Option<models::capacity::v1_0_0::Capacity>,
#[serde(rename = "CapacityBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capacity_bytes: Option<i64>,
#[serde(rename = "CapacitySources")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capacity_sources: Option<Vec<models::capacity::CapacitySource>>,
#[serde(rename = "CapacitySources@odata.count")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capacity_sources_odata_count: Option<models::odata_v4::Count>,
#[serde(rename = "Compressed")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub compressed: Option<bool>,
#[serde(rename = "Deduplicated")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deduplicated: Option<bool>,
#[serde(rename = "Description")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<models::resource::Description>,
#[serde(rename = "DisplayName")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(rename = "Encrypted")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub encrypted: Option<bool>,
#[serde(rename = "EncryptionTypes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub encryption_types: Option<Vec<models::volume::EncryptionTypes>>,
#[serde(rename = "IOPerfModeEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub io_perf_mode_enabled: Option<bool>,
#[serde(rename = "IOStatistics")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub io_statistics: Option<models::io_statistics::IOStatistics>,
#[serde(rename = "Id")]
#[serde(skip_deserializing)]
pub id: models::resource::Id,
#[serde(rename = "Identifiers")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub identifiers: Option<Vec<models::resource::Identifier>>,
#[serde(rename = "InitializeMethod")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub initialize_method: Option<models::volume::InitializeMethod>,
#[serde(rename = "IsBootCapable")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_boot_capable: Option<bool>,
#[serde(rename = "Links")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub links: Option<models::volume::v1_8_0::Links>,
#[serde(rename = "LogicalUnitNumber")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub logical_unit_number: Option<i64>,
#[serde(rename = "LowSpaceWarningThresholdPercents")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub low_space_warning_threshold_percents: Option<Vec<i64>>,
#[serde(rename = "Manufacturer")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub manufacturer: Option<String>,
#[serde(rename = "MaxBlockSizeBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_block_size_bytes: Option<i64>,
#[serde(rename = "MediaSpanCount")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub media_span_count: Option<i64>,
#[serde(rename = "Model")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(rename = "NVMeNamespaceProperties")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nvme_namespace_properties: Option<models::volume::v1_8_0::NVMeNamespaceProperties>,
#[serde(rename = "Name")]
#[serde(skip_deserializing)]
pub name: models::resource::Name,
#[serde(rename = "Oem")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub oem: Option<models::resource::Oem>,
#[serde(rename = "Operations")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operations: Option<Vec<models::volume::v1_8_0::Operation>>,
#[serde(rename = "OptimumIOSizeBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optimum_io_size_bytes: Option<i64>,
#[serde(rename = "ProvisioningPolicy")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provisioning_policy: Option<models::data_storage_lo_s_capabilities::ProvisioningPolicy>,
#[serde(rename = "RAIDType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub raid_type: Option<models::volume::RAIDType>,
#[serde(rename = "ReadCachePolicy")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub read_cache_policy: Option<models::volume::ReadCachePolicyType>,
#[serde(rename = "RecoverableCapacitySourceCount")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recoverable_capacity_source_count: Option<i64>,
#[serde(rename = "RemainingCapacityPercent")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remaining_capacity_percent: Option<i64>,
#[serde(rename = "RemoteReplicaTargets")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remote_replica_targets: Option<Vec<String>>,
#[serde(rename = "ReplicaInfo")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replica_info: Option<models::storage_replica_info::v1_4_0::ReplicaInfo>,
#[serde(rename = "ReplicaTargets")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replica_targets: Option<Vec<models::odata_v4::IdRef>>,
#[serde(rename = "ReplicaTargets@odata.count")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replica_targets_odata_count: Option<models::odata_v4::Count>,
#[serde(rename = "Status")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<models::resource::Status>,
#[serde(rename = "StorageGroups")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub storage_groups: Option<models::odata_v4::IdRef>,
#[serde(rename = "StripSizeBytes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub strip_size_bytes: Option<i64>,
#[serde(rename = "VolumeType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volume_type: Option<models::volume::VolumeType>,
#[serde(rename = "VolumeUsage")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volume_usage: Option<models::volume::VolumeUsageType>,
#[serde(rename = "WriteCachePolicy")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub write_cache_policy: Option<models::volume::WriteCachePolicyType>,
#[serde(rename = "WriteCacheState")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub write_cache_state: Option<models::volume::WriteCacheStateType>,
#[serde(rename = "WriteHoleProtectionPolicy")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub write_hole_protection_policy: Option<models::volume::WriteHoleProtectionPolicyType>,
}
impl crate::Metadata<'static> for Volume {
const JSON_SCHEMA: &'static str = "Volume.v1_8_0.json";
}