use bytesize::ByteSize;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use super::Merge;
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct CapabilityNetworkV1 {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network_id: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ingress: Option<NetworkIngressV1>,
#[serde(skip_serializing_if = "Option::is_none")]
pub egress: Option<NetworkEgressV1>,
}
impl Merge for CapabilityNetworkV1 {
fn merge_extend(self, other: &Self) -> Self {
Self {
enabled: self.enabled.merge_extend(&other.enabled),
network_id: self.network_id.merge_extend(&other.network_id),
ingress: self.ingress.merge_extend(&other.ingress),
egress: self.egress.merge_extend(&other.egress),
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct NetworkIngressV1 {
pub enabled: Option<bool>,
#[schemars(with = "String")]
pub maximum_bandwidth_per_second: Option<ByteSize>,
}
impl Merge for NetworkIngressV1 {
fn merge_extend(self, other: &Self) -> Self {
Self {
enabled: self.enabled.merge_extend(&other.enabled),
maximum_bandwidth_per_second: self
.maximum_bandwidth_per_second
.merge_extend(&other.maximum_bandwidth_per_second),
}
}
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct NetworkEgressV1 {
pub enabled: Option<bool>,
#[schemars(with = "String")]
pub maximum_bandwidth_per_second: Option<ByteSize>,
}
impl Merge for NetworkEgressV1 {
fn merge_extend(self, other: &Self) -> Self {
Self {
enabled: self.enabled.merge_extend(&other.enabled),
maximum_bandwidth_per_second: self
.maximum_bandwidth_per_second
.merge_extend(&other.maximum_bandwidth_per_second),
}
}
}