use derive_empty_traits::EmptyTraits;
use resolver_api::derive::Request;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{
docker::{
container::{Container, ContainerListItem},
image::{Image, ImageHistoryResponseItem, ImageListItem},
network::{Network, NetworkListItem},
volume::{Volume, VolumeListItem},
},
server::{
Server, ServerActionState, ServerListItem, ServerQuery,
ServerState,
},
stack::ComposeProject,
stats::{
SystemInformation, SystemProcess, SystemStats, SystemStatsRecord,
},
update::Log,
ResourceTarget, SearchCombinator, Timelength, I64, U64,
};
use super::KomodoReadRequest;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(Server)]
pub struct GetServer {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type GetServerResponse = Server;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListServersResponse)]
pub struct ListServers {
#[serde(default)]
pub query: ServerQuery,
}
#[typeshare]
pub type ListServersResponse = Vec<ServerListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListFullServersResponse)]
pub struct ListFullServers {
#[serde(default)]
pub query: ServerQuery,
}
#[typeshare]
pub type ListFullServersResponse = Vec<Server>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetServerStateResponse)]
pub struct GetServerState {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct GetServerStateResponse {
pub status: ServerState,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ServerActionState)]
pub struct GetServerActionState {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type GetServerActionStateResponse = ServerActionState;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetPeripheryVersionResponse)]
pub struct GetPeripheryVersion {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct GetPeripheryVersionResponse {
pub version: String,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListDockerNetworksResponse)]
pub struct ListDockerNetworks {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type ListDockerNetworksResponse = Vec<NetworkListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(InspectDockerNetworkResponse)]
pub struct InspectDockerNetwork {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub network: String,
}
#[typeshare]
pub type InspectDockerNetworkResponse = Network;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListDockerImagesResponse)]
pub struct ListDockerImages {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type ListDockerImagesResponse = Vec<ImageListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(InspectDockerImageResponse)]
pub struct InspectDockerImage {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub image: String,
}
#[typeshare]
pub type InspectDockerImageResponse = Image;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListDockerImageHistoryResponse)]
pub struct ListDockerImageHistory {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub image: String,
}
#[typeshare]
pub type ListDockerImageHistoryResponse =
Vec<ImageHistoryResponseItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListDockerContainersResponse)]
pub struct ListDockerContainers {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type ListDockerContainersResponse = Vec<ContainerListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListAllDockerContainersResponse)]
pub struct ListAllDockerContainers {
#[serde(default)]
pub servers: Vec<String>,
}
#[typeshare]
pub type ListAllDockerContainersResponse = Vec<ContainerListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(InspectDockerContainerResponse)]
pub struct InspectDockerContainer {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub container: String,
}
#[typeshare]
pub type InspectDockerContainerResponse = Container;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetContainerLogResponse)]
pub struct GetContainerLog {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub container: String,
#[serde(default = "default_tail")]
pub tail: U64,
#[serde(default)]
pub timestamps: bool,
}
fn default_tail() -> u64 {
50
}
#[typeshare]
pub type GetContainerLogResponse = Log;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(SearchContainerLogResponse)]
pub struct SearchContainerLog {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub container: String,
pub terms: Vec<String>,
#[serde(default)]
pub combinator: SearchCombinator,
#[serde(default)]
pub invert: bool,
#[serde(default)]
pub timestamps: bool,
}
#[typeshare]
pub type SearchContainerLogResponse = Log;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetResourceMatchingContainerResponse)]
pub struct GetResourceMatchingContainer {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub container: String,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct GetResourceMatchingContainerResponse {
pub resource: Option<ResourceTarget>,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListDockerVolumesResponse)]
pub struct ListDockerVolumes {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type ListDockerVolumesResponse = Vec<VolumeListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(InspectDockerVolumeResponse)]
pub struct InspectDockerVolume {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub volume: String,
}
#[typeshare]
pub type InspectDockerVolumeResponse = Volume;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListComposeProjectsResponse)]
pub struct ListComposeProjects {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type ListComposeProjectsResponse = Vec<ComposeProject>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetSystemInformationResponse)]
pub struct GetSystemInformation {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type GetSystemInformationResponse = SystemInformation;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetSystemStatsResponse)]
pub struct GetSystemStats {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type GetSystemStatsResponse = SystemStats;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListSystemProcessesResponse)]
pub struct ListSystemProcesses {
#[serde(alias = "id", alias = "name")]
pub server: String,
}
#[typeshare]
pub type ListSystemProcessesResponse = Vec<SystemProcess>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetHistoricalServerStatsResponse)]
pub struct GetHistoricalServerStats {
#[serde(alias = "id", alias = "name")]
pub server: String,
pub granularity: Timelength,
#[serde(default)]
pub page: u32,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct GetHistoricalServerStatsResponse {
pub stats: Vec<SystemStatsRecord>,
pub next_page: Option<u32>,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetServersSummaryResponse)]
pub struct GetServersSummary {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct GetServersSummaryResponse {
pub total: I64,
pub healthy: I64,
pub unhealthy: I64,
pub disabled: I64,
}