use crate::models;
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct Memory {
#[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(\"#Memory.v1_17_1.Memory\".to_string())"))]
pub odata_type: models::odata_v4::Type,
#[serde(rename = "Actions")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub actions: Option<models::memory::v1_17_1::Actions>,
#[serde(rename = "AllocationAlignmentMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allocation_alignment_mi_b: Option<i64>,
#[serde(rename = "AllocationIncrementMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allocation_increment_mi_b: Option<i64>,
#[serde(rename = "AllowedSpeedsMHz")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allowed_speeds_m_hz: Option<Vec<i64>>,
#[serde(rename = "Assembly")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assembly: Option<models::odata_v4::IdRef>,
#[serde(rename = "BaseModuleType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub base_module_type: Option<models::memory::v1_17_1::BaseModuleType>,
#[serde(rename = "BusWidthBits")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bus_width_bits: Option<i64>,
#[serde(rename = "CXL")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cxl: Option<models::memory::v1_17_1::CXL>,
#[serde(rename = "CacheSizeMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cache_size_mi_b: Option<i64>,
#[serde(rename = "CapacityMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capacity_mi_b: Option<i64>,
#[serde(rename = "Certificates")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub certificates: Option<models::odata_v4::IdRef>,
#[serde(rename = "ConfigurationLocked")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub configuration_locked: Option<bool>,
#[serde(rename = "DataWidthBits")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data_width_bits: Option<i64>,
#[serde(rename = "Description")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<models::resource::Description>,
#[serde(rename = "DeviceID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub device_id: Option<String>,
#[serde(rename = "DeviceLocator")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub device_locator: Option<String>,
#[serde(rename = "Enabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(rename = "EnvironmentMetrics")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub environment_metrics: Option<models::odata_v4::IdRef>,
#[serde(rename = "ErrorCorrection")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error_correction: Option<models::memory::v1_17_1::ErrorCorrection>,
#[serde(rename = "FirmwareApiVersion")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub firmware_api_version: Option<String>,
#[serde(rename = "FirmwareRevision")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub firmware_revision: Option<String>,
#[serde(rename = "FunctionClasses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub function_classes: Option<Vec<String>>,
#[serde(rename = "HealthData")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub health_data: Option<models::memory::v1_17_1::HealthData>,
#[serde(rename = "Id")]
#[serde(skip_deserializing)]
pub id: models::resource::Id,
#[serde(rename = "IsRankSpareEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_rank_spare_enabled: Option<bool>,
#[serde(rename = "IsSpareDeviceEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_spare_device_enabled: Option<bool>,
#[serde(rename = "Links")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub links: Option<models::memory::v1_17_1::Links>,
#[serde(rename = "Location")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<models::resource::Location>,
#[serde(rename = "LocationIndicatorActive")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location_indicator_active: Option<bool>,
#[serde(rename = "Log")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub log: Option<models::odata_v4::IdRef>,
#[serde(rename = "LogicalSizeMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub logical_size_mi_b: Option<i64>,
#[serde(rename = "Manufacturer")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub manufacturer: Option<String>,
#[serde(rename = "MaxTDPMilliWatts")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_tdp_milli_watts: Option<Vec<i64>>,
#[serde(rename = "Measurements")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub measurements: Option<Vec<models::software_inventory::MeasurementBlock>>,
#[serde(rename = "MemoryDeviceType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub memory_device_type: Option<models::memory::v1_17_1::MemoryDeviceType>,
#[serde(rename = "MemoryLocation")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub memory_location: Option<models::memory::v1_17_1::MemoryLocation>,
#[serde(rename = "MemoryMedia")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub memory_media: Option<Vec<models::memory::v1_17_1::MemoryMedia>>,
#[serde(rename = "MemorySubsystemControllerManufacturerID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub memory_subsystem_controller_manufacturer_id: Option<String>,
#[serde(rename = "MemorySubsystemControllerProductID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub memory_subsystem_controller_product_id: Option<String>,
#[serde(rename = "MemoryType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub memory_type: Option<models::memory::v1_17_1::MemoryType>,
#[serde(rename = "Metrics")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metrics: Option<models::odata_v4::IdRef>,
#[serde(rename = "Model")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
#[serde(rename = "ModuleManufacturerID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub module_manufacturer_id: Option<String>,
#[serde(rename = "ModuleProductID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub module_product_id: Option<String>,
#[serde(rename = "Name")]
#[serde(skip_deserializing)]
pub name: models::resource::Name,
#[serde(rename = "NonVolatileSizeLimitMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub non_volatile_size_limit_mi_b: Option<i64>,
#[serde(rename = "NonVolatileSizeMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub non_volatile_size_mi_b: Option<i64>,
#[serde(rename = "Oem")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub oem: Option<models::resource::Oem>,
#[serde(rename = "OperatingMemoryModes")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operating_memory_modes: Option<Vec<models::memory::v1_17_1::OperatingMemoryModes>>,
#[serde(rename = "OperatingSpeedMhz")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operating_speed_mhz: Option<i64>,
#[serde(rename = "OperatingSpeedRangeMHz")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operating_speed_range_m_hz: Option<models::control::ControlRangeExcerpt>,
#[serde(rename = "PartNumber")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub part_number: Option<String>,
#[serde(rename = "PersistentRegionNumberLimit")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub persistent_region_number_limit: Option<i64>,
#[serde(rename = "PersistentRegionSizeLimitMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub persistent_region_size_limit_mi_b: Option<i64>,
#[serde(rename = "PersistentRegionSizeMaxMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub persistent_region_size_max_mi_b: Option<i64>,
#[serde(rename = "PoisonListMaxMediaErrorRecords")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub poison_list_max_media_error_records: Option<i64>,
#[serde(rename = "PowerManagementPolicy")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub power_management_policy: Option<models::memory::v1_17_1::PowerManagementPolicy>,
#[serde(rename = "RankCount")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rank_count: Option<i64>,
#[serde(rename = "Regions")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub regions: Option<Vec<models::memory::v1_17_1::RegionSet>>,
#[serde(rename = "SecurityCapabilities")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub security_capabilities: Option<models::memory::v1_17_1::SecurityCapabilities>,
#[serde(rename = "SecurityState")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub security_state: Option<models::memory::v1_17_1::SecurityStates>,
#[serde(rename = "SecurityStates")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub security_states: Option<models::memory::v1_17_1::SecurityStateInfo>,
#[serde(rename = "SerialNumber")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub serial_number: Option<String>,
#[serde(rename = "SpareDeviceCount")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub spare_device_count: Option<i64>,
#[serde(rename = "SparePartNumber")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub spare_part_number: Option<String>,
#[serde(rename = "Status")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<models::resource::Status>,
#[serde(rename = "SubsystemDeviceID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subsystem_device_id: Option<String>,
#[serde(rename = "SubsystemVendorID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subsystem_vendor_id: Option<String>,
#[serde(rename = "VendorID")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vendor_id: Option<String>,
#[serde(rename = "VolatileRegionNumberLimit")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volatile_region_number_limit: Option<i64>,
#[serde(rename = "VolatileRegionSizeLimitMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volatile_region_size_limit_mi_b: Option<i64>,
#[serde(rename = "VolatileRegionSizeMaxMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volatile_region_size_max_mi_b: Option<i64>,
#[serde(rename = "VolatileSizeLimitMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volatile_size_limit_mi_b: Option<i64>,
#[serde(rename = "VolatileSizeMiB")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volatile_size_mi_b: Option<i64>,
}
impl crate::Metadata<'static> for Memory {
const JSON_SCHEMA: &'static str = "Memory.v1_17_1.json";
}