use crate::models;
#[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_9_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_9_0::Actions>,
#[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_9_0::CXL>,
#[serde(rename = "CapableProtocolVersions")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub capable_protocol_versions: Option<Vec<String>>,
#[serde(rename = "CurrentProtocolVersion")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current_protocol_version: Option<String>,
#[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>,
#[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_9_0::EthernetProperties>,
#[serde(rename = "FibreChannel")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fibre_channel: Option<models::port::v1_9_0::FibreChannelProperties>,
#[serde(rename = "FunctionMaxBandwidth")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub function_max_bandwidth: Option<Vec<models::port::v1_9_0::FunctionMaxBandwidth>>,
#[serde(rename = "FunctionMinBandwidth")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub function_min_bandwidth: Option<Vec<models::port::v1_9_0::FunctionMinBandwidth>>,
#[serde(rename = "GenZ")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub gen_z: Option<models::port::v1_9_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_9_0::InfiniBandProperties>,
#[serde(rename = "InterfaceEnabled")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interface_enabled: Option<bool>,
#[serde(rename = "LinkConfiguration")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link_configuration: Option<Vec<models::port::v1_9_0::LinkConfiguration>>,
#[serde(rename = "LinkNetworkTechnology")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link_network_technology: Option<models::port::v1_9_0::LinkNetworkTechnology>,
#[serde(rename = "LinkState")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link_state: Option<models::port::v1_9_0::LinkState>,
#[serde(rename = "LinkStatus")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub link_status: Option<models::port::v1_9_0::LinkStatus>,
#[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_9_0::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 = "MaxFrameSize")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_frame_size: Option<i64>,
#[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>,
#[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_9_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_9_0::PortType>,
#[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_9_0::SFP>,
#[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>,
#[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_9_0.json";
}