use std::collections::HashMap;
use clap::ValueEnum;
use serde::{Deserialize, Serialize};
use strum::AsRefStr;
use typeshare::typeshare;
use super::*;
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct SwarmNodeListItem {
#[serde(rename = "ID")]
pub id: Option<String>,
#[serde(rename = "Name")]
pub name: Option<String>,
#[serde(rename = "Hostname")]
pub hostname: Option<String>,
#[serde(rename = "Role")]
pub role: Option<NodeSpecRoleEnum>,
#[serde(rename = "Availability")]
pub availability: Option<NodeSpecAvailabilityEnum>,
#[serde(rename = "Labels")]
pub labels: Option<HashMap<String, String>>,
#[serde(rename = "State")]
pub state: Option<NodeState>,
#[serde(rename = "ManagerAddr")]
pub manager_addr: Option<String>,
#[serde(rename = "CreatedAt")]
pub created_at: Option<String>,
#[serde(rename = "UpdatedAt")]
pub updated_at: Option<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct SwarmNode {
#[serde(rename = "ID")]
pub id: Option<String>,
#[serde(rename = "Version")]
pub version: Option<ObjectVersion>,
#[serde(rename = "CreatedAt")]
pub created_at: Option<String>,
#[serde(rename = "UpdatedAt")]
pub updated_at: Option<String>,
#[serde(rename = "Spec")]
pub spec: Option<NodeSpec>,
#[serde(rename = "Description")]
pub description: Option<NodeDescription>,
#[serde(rename = "Status")]
pub status: Option<NodeStatus>,
#[serde(rename = "ManagerStatus")]
pub manager_status: Option<ManagerStatus>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct NodeSpec {
#[serde(rename = "Name")]
pub name: Option<String>,
#[serde(rename = "Labels")]
pub labels: Option<HashMap<String, String>>,
#[serde(rename = "Role")]
pub role: Option<NodeSpecRoleEnum>,
#[serde(rename = "Availability")]
pub availability: Option<NodeSpecAvailabilityEnum>,
}
#[typeshare]
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Default,
Serialize,
Deserialize,
AsRefStr,
ValueEnum,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum NodeSpecRoleEnum {
#[default]
#[serde(rename = "")]
EMPTY,
#[serde(rename = "worker")]
WORKER,
#[serde(rename = "manager")]
MANAGER,
}
#[typeshare]
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Default,
Serialize,
Deserialize,
AsRefStr,
ValueEnum,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum NodeSpecAvailabilityEnum {
#[default]
#[serde(rename = "")]
EMPTY,
#[serde(rename = "active")]
ACTIVE,
#[serde(rename = "pause")]
PAUSE,
#[serde(rename = "drain")]
DRAIN,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct NodeDescription {
#[serde(rename = "Hostname")]
pub hostname: Option<String>,
#[serde(rename = "Platform")]
pub platform: Option<Platform>,
#[serde(rename = "Resources")]
pub resources: Option<ResourceObject>,
#[serde(rename = "Engine")]
pub engine: Option<EngineDescription>,
#[serde(rename = "TLSInfo")]
pub tls_info: Option<TlsInfo>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct EngineDescription {
#[serde(rename = "EngineVersion")]
pub engine_version: Option<String>,
#[serde(rename = "Labels")]
pub labels: Option<HashMap<String, String>>,
#[serde(rename = "Plugins")]
pub plugins: Option<Vec<EngineDescriptionPlugins>>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct EngineDescriptionPlugins {
#[serde(rename = "Type")]
pub typ: Option<String>,
#[serde(rename = "Name")]
pub name: Option<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct NodeStatus {
#[serde(rename = "State")]
pub state: Option<NodeState>,
#[serde(rename = "Message")]
pub message: Option<String>,
#[serde(rename = "Addr")]
pub addr: Option<String>,
}
#[typeshare]
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Default,
Serialize,
Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum NodeState {
#[default]
#[serde(rename = "unknown")]
UNKNOWN,
#[serde(rename = "down")]
DOWN,
#[serde(rename = "ready")]
READY,
#[serde(rename = "disconnected")]
DISCONNECTED,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct ManagerStatus {
#[serde(rename = "Leader")]
pub leader: Option<bool>,
#[serde(rename = "Reachability")]
pub reachability: Option<NodeReachability>,
#[serde(rename = "Addr")]
pub addr: Option<String>,
}
#[typeshare]
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Default,
Serialize,
Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum NodeReachability {
#[default]
#[serde(rename = "unknown")]
UNKNOWN,
#[serde(rename = "unreachable")]
UNREACHABLE,
#[serde(rename = "reachable")]
REACHABLE,
}