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 Port schema contains properties that describe a port of a switch, controller, chassis, or any other device that could be connected to another entity.
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[derive(derivative::Derivative)]
#[derivative(Default)]
pub struct Port {
    #[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(\"#Port.v1_8_0.Port\".to_string())"))]
    pub odata_type: models::odata_v4::Type,
    #[serde(rename = "Actions")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub actions: Option<models::port::v1_8_0::Actions>,
    /// The number of active lanes for this interface.
    #[serde(rename = "ActiveWidth")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub active_width: Option<i64>,
    #[serde(rename = "CXL")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub cxl: Option<models::port::v1_8_0::CXL>,
    /// The protocol versions capable of being sent over this port.
    #[serde(rename = "CapableProtocolVersions")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub capable_protocol_versions: Option<Vec<String>>,
    /// The protocol version being sent over this port.
    #[serde(rename = "CurrentProtocolVersion")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub current_protocol_version: Option<String>,
    /// The current speed of this port.
    #[serde(rename = "CurrentSpeedGbps")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub current_speed_gbps: Option<f64>,
    #[serde(rename = "Description")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<models::resource::Description>,
    /// An indication of whether this port 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 = "Ethernet")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub ethernet: Option<models::port::v1_8_0::EthernetProperties>,
    #[serde(rename = "FibreChannel")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub fibre_channel: Option<models::port::v1_8_0::FibreChannelProperties>,
    /// An array of maximum bandwidth allocation percentages for the functions associated with this port.
    #[serde(rename = "FunctionMaxBandwidth")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub function_max_bandwidth: Option<Vec<models::port::v1_8_0::FunctionMaxBandwidth>>,
    /// An array of minimum bandwidth allocation percentages for the functions associated with this port.
    #[serde(rename = "FunctionMinBandwidth")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub function_min_bandwidth: Option<Vec<models::port::v1_8_0::FunctionMinBandwidth>>,
    #[serde(rename = "GenZ")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub gen_z: Option<models::port::v1_8_0::GenZ>,
    #[serde(rename = "Id")]
    #[serde(skip_deserializing)]
    pub id: models::resource::Id,
    #[serde(rename = "InfiniBand")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub infini_band: Option<models::port::v1_8_0::InfiniBandProperties>,
    /// An indication of whether the interface is enabled.
    #[serde(rename = "InterfaceEnabled")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub interface_enabled: Option<bool>,
    /// The link configuration of this port.
    #[serde(rename = "LinkConfiguration")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub link_configuration: Option<Vec<models::port::v1_8_0::LinkConfiguration>>,
    #[serde(rename = "LinkNetworkTechnology")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub link_network_technology: Option<models::port::v1_8_0::LinkNetworkTechnology>,
    #[serde(rename = "LinkState")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub link_state: Option<models::port::v1_8_0::LinkState>,
    #[serde(rename = "LinkStatus")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub link_status: Option<models::port::v1_8_0::LinkStatus>,
    /// The number of link state transitions for this interface.
    #[serde(rename = "LinkTransitionIndicator")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub link_transition_indicator: Option<i64>,
    #[serde(rename = "Links")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub links: Option<models::port::v1_8_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>,
    /// The maximum frame size supported by the port.
    #[serde(rename = "MaxFrameSize")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub max_frame_size: Option<i64>,
    /// The maximum speed of this port as currently configured.
    #[serde(rename = "MaxSpeedGbps")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub max_speed_gbps: Option<f64>,
    #[serde(rename = "Metrics")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub metrics: Option<models::odata_v4::IdRef>,
    #[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>,
    /// The label of this port on the physical package for this port.
    #[serde(rename = "PortId")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub port_id: Option<String>,
    #[serde(rename = "PortMedium")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub port_medium: Option<models::port::v1_8_0::PortMedium>,
    #[serde(rename = "PortProtocol")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub port_protocol: Option<models::protocol::Protocol>,
    #[serde(rename = "PortType")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub port_type: Option<models::port::v1_8_0::PortType>,
    /// The identifier of the remote port to which this port is connected.
    #[serde(rename = "RemotePortId")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub remote_port_id: Option<String>,
    #[serde(rename = "SFP")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub sfp: Option<models::port::v1_8_0::SFP>,
    /// An indication of whether a signal is detected on this interface.
    #[serde(rename = "SignalDetected")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub signal_detected: Option<bool>,
    #[serde(rename = "Status")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub status: Option<models::resource::Status>,
    /// The number of lanes, phys, or other physical transport links that this port contains.
    #[serde(rename = "Width")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub width: Option<i64>,
}

impl crate::Metadata<'static> for Port {
    const JSON_SCHEMA: &'static str = "Port.v1_8_0.json";
}