Skip to main content

zlayer_types/api/
networks.rs

1//! Network management API DTOs.
2
3use serde::{Deserialize, Serialize};
4use utoipa::ToSchema;
5
6use crate::spec::NetworkPolicySpec;
7
8/// Summary returned when listing networks.
9#[derive(Debug, Serialize, Deserialize, ToSchema)]
10pub struct NetworkSummary {
11    pub name: String,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub description: Option<String>,
14    pub cidr_count: usize,
15    pub member_count: usize,
16    pub rule_count: usize,
17}
18
19impl From<&NetworkPolicySpec> for NetworkSummary {
20    fn from(spec: &NetworkPolicySpec) -> Self {
21        Self {
22            name: spec.name.clone(),
23            description: spec.description.clone(),
24            cidr_count: spec.cidrs.len(),
25            member_count: spec.members.len(),
26            rule_count: spec.access_rules.len(),
27        }
28    }
29}