redfish-codegen 0.3.1

An unopinionated translation of the Redfish specification into Rust.
Documentation
// Generated by redfish-codegen. Do not modify.

use crate::models;

/// The Memory schema represents a memory device, such as a DIMM, and its configuration.
#[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_0.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_0::Actions>,
    /// The boundary that memory regions are allocated on, measured in mebibytes (MiB).
    #[serde(rename = "AllocationAlignmentMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub allocation_alignment_mi_b: Option<i64>,
    /// The size of the smallest unit of allocation for a memory region in mebibytes (MiB).
    #[serde(rename = "AllocationIncrementMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub allocation_increment_mi_b: Option<i64>,
    /// Speeds supported by this memory device.
    #[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_0::BaseModuleType>,
    /// The bus width, in bits.
    #[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_0::CXL>,
    /// Total size of the cache portion memory in MiB.
    #[serde(rename = "CacheSizeMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub cache_size_mi_b: Option<i64>,
    /// Memory capacity in mebibytes (MiB).
    #[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>,
    /// An indication of whether the configuration of this memory device is locked and cannot be altered.
    #[serde(rename = "ConfigurationLocked")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub configuration_locked: Option<bool>,
    /// Data width in bits.
    #[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>,
    /// Device ID.
    #[serde(rename = "DeviceID")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub device_id: Option<String>,
    /// Location of the memory device in the platform.
    #[serde(rename = "DeviceLocator")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub device_locator: Option<String>,
    /// An indication of whether this memory is enabled.
    #[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_0::ErrorCorrection>,
    /// Version of API supported by the firmware.
    #[serde(rename = "FirmwareApiVersion")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub firmware_api_version: Option<String>,
    /// Revision of firmware on the memory controller.
    #[serde(rename = "FirmwareRevision")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub firmware_revision: Option<String>,
    /// Function classes by the memory device.
    #[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_0::HealthData>,
    #[serde(rename = "Id")]
    #[serde(skip_deserializing)]
    pub id: models::resource::Id,
    /// An indication of whether rank spare is enabled for this memory device.
    #[serde(rename = "IsRankSpareEnabled")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub is_rank_spare_enabled: Option<bool>,
    /// An indication of whether a spare device is enabled for this memory device.
    #[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_0::Links>,
    #[serde(rename = "Location")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub location: Option<models::resource::Location>,
    /// An indicator allowing an operator to physically locate this resource.
    #[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>,
    /// Total size of the logical memory in MiB.
    #[serde(rename = "LogicalSizeMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub logical_size_mi_b: Option<i64>,
    /// The memory device manufacturer.
    #[serde(rename = "Manufacturer")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub manufacturer: Option<String>,
    /// Set of maximum power budgets supported by the memory device in milliwatts.
    #[serde(rename = "MaxTDPMilliWatts")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub max_tdp_milli_watts: Option<Vec<i64>>,
    /// An array of DSP0274-defined measurement blocks.
    #[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_0::MemoryDeviceType>,
    #[serde(rename = "MemoryLocation")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub memory_location: Option<models::memory::v1_17_0::MemoryLocation>,
    /// Media of this memory device.
    #[serde(rename = "MemoryMedia")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub memory_media: Option<Vec<models::memory::v1_17_0::MemoryMedia>>,
    /// The manufacturer ID of the memory subsystem controller of this memory device.
    #[serde(rename = "MemorySubsystemControllerManufacturerID")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub memory_subsystem_controller_manufacturer_id: Option<String>,
    /// The product ID of the memory subsystem controller of this memory device.
    #[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_0::MemoryType>,
    #[serde(rename = "Metrics")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub metrics: Option<models::odata_v4::IdRef>,
    /// The product model number of this device.
    #[serde(rename = "Model")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub model: Option<String>,
    /// The manufacturer ID of this memory device.
    #[serde(rename = "ModuleManufacturerID")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub module_manufacturer_id: Option<String>,
    /// The product ID of this memory device.
    #[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,
    /// The total non-volatile memory capacity in mebibytes (MiB).
    #[serde(rename = "NonVolatileSizeLimitMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub non_volatile_size_limit_mi_b: Option<i64>,
    /// Total size of the non-volatile portion memory in MiB.
    #[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>,
    /// Memory modes supported by the memory device.
    #[serde(rename = "OperatingMemoryModes")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub operating_memory_modes: Option<Vec<models::memory::v1_17_0::OperatingMemoryModes>>,
    /// Operating speed of the memory device in MHz or MT/s as appropriate.
    #[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>,
    /// The product part number of this device.
    #[serde(rename = "PartNumber")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub part_number: Option<String>,
    /// Total number of persistent regions this memory device can support.
    #[serde(rename = "PersistentRegionNumberLimit")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub persistent_region_number_limit: Option<i64>,
    /// Total size of persistent regions in mebibytes (MiB).
    #[serde(rename = "PersistentRegionSizeLimitMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub persistent_region_size_limit_mi_b: Option<i64>,
    /// Maximum size of a single persistent region in mebibytes (MiB).
    #[serde(rename = "PersistentRegionSizeMaxMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub persistent_region_size_max_mi_b: Option<i64>,
    /// The maximum number of media error records this device can track in its poison list.
    #[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_0::PowerManagementPolicy>,
    /// Number of ranks available in the memory device.
    #[serde(rename = "RankCount")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub rank_count: Option<i64>,
    /// Memory regions information within the memory device.
    #[serde(rename = "Regions")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub regions: Option<Vec<models::memory::v1_17_0::RegionSet>>,
    #[serde(rename = "SecurityCapabilities")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub security_capabilities: Option<models::memory::v1_17_0::SecurityCapabilities>,
    #[serde(rename = "SecurityState")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub security_state: Option<models::memory::v1_17_0::SecurityStates>,
    #[serde(rename = "SecurityStates")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub security_states: Option<models::memory::v1_17_0::SecurityStateInfo>,
    /// The product serial number of this device.
    #[serde(rename = "SerialNumber")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub serial_number: Option<String>,
    /// Number of unused spare devices available in the memory device.
    #[serde(rename = "SpareDeviceCount")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub spare_device_count: Option<i64>,
    /// The spare part number of the memory.
    #[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>,
    /// Subsystem device ID.
    #[serde(rename = "SubsystemDeviceID")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub subsystem_device_id: Option<String>,
    /// SubSystem vendor ID.
    #[serde(rename = "SubsystemVendorID")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub subsystem_vendor_id: Option<String>,
    /// Vendor ID.
    #[serde(rename = "VendorID")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub vendor_id: Option<String>,
    /// Total number of volatile regions this memory device can support.
    #[serde(rename = "VolatileRegionNumberLimit")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub volatile_region_number_limit: Option<i64>,
    /// Total size of volatile regions in mebibytes (MiB).
    #[serde(rename = "VolatileRegionSizeLimitMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub volatile_region_size_limit_mi_b: Option<i64>,
    /// Maximum size of a single volatile region in mebibytes (MiB).
    #[serde(rename = "VolatileRegionSizeMaxMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub volatile_region_size_max_mi_b: Option<i64>,
    /// The total volatile memory capacity in mebibytes (MiB).
    #[serde(rename = "VolatileSizeLimitMiB")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub volatile_size_limit_mi_b: Option<i64>,
    /// Total size of the volatile portion memory in MiB.
    #[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_0.json";
}