use mogh_resolver::Resolve;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{
I64, SearchCombinator, U64,
deployment::{
Deployment, DeploymentActionState, DeploymentListItem,
DeploymentQuery, DeploymentState,
},
docker::{
container::{Container, ContainerListItem, ContainerStats},
service::SwarmService,
},
update::Log,
};
use super::KomodoReadRequest;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/GetDeployment",
description = "Get a specific deployment by name or id.",
request_body(content = GetDeployment),
responses(
(status = 200, description = "The deployment", body = crate::entities::deployment::DeploymentSchema),
),
)]
pub fn get_deployment() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentResponse)]
#[error(mogh_error::Error)]
pub struct GetDeployment {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type GetDeploymentResponse = Deployment;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/ListDeployments",
description = "List deployments matching optional query.",
request_body(content = ListDeployments),
responses(
(status = 200, description = "The list of deployments", body = ListDeploymentsResponse),
),
)]
pub fn list_deployments() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(ListDeploymentsResponse)]
#[error(mogh_error::Error)]
pub struct ListDeployments {
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListDeploymentsResponse = Vec<DeploymentListItem>;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/ListFullDeployments",
description = "List deployments matching optional query.",
request_body(content = ListFullDeployments),
responses(
(status = 200, description = "The list of deployments", body = ListFullDeploymentsResponse),
),
)]
pub fn list_full_deployments() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(ListFullDeploymentsResponse)]
#[error(mogh_error::Error)]
pub struct ListFullDeployments {
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListFullDeploymentsResponse = Vec<Deployment>;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/GetDeploymentContainer",
description = "Get the container, including image / status, of the target deployment.",
request_body(content = GetDeploymentContainer),
responses(
(status = 200, description = "The deployment container", body = GetDeploymentContainerResponse),
),
)]
pub fn get_deployment_container() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentContainerResponse)]
#[error(mogh_error::Error)]
pub struct GetDeploymentContainer {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct GetDeploymentContainerResponse {
pub state: DeploymentState,
pub container: Option<ContainerListItem>,
}
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/InspectDeploymentContainer",
description = "Inspect the docker container associated with the Deployment.",
request_body(content = InspectDeploymentContainer),
responses(
(status = 200, description = "The container", body = InspectDeploymentContainerResponse),
),
)]
pub fn inspect_deployment_container() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(InspectDeploymentContainerResponse)]
#[error(mogh_error::Error)]
pub struct InspectDeploymentContainer {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type InspectDeploymentContainerResponse = Container;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/InspectDeploymentSwarmService",
description = "Inspect the swarm service associated with the Deployment.",
request_body(content = InspectDeploymentSwarmService),
responses(
(status = 200, description = "The swarm service", body = InspectDeploymentSwarmServiceResponse),
),
)]
pub fn inspect_deployment_swarm_service() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(InspectDeploymentSwarmServiceResponse)]
#[error(mogh_error::Error)]
pub struct InspectDeploymentSwarmService {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type InspectDeploymentSwarmServiceResponse = SwarmService;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/GetDeploymentLog",
description = "Get the deployment log's tail, split by stdout/stderr.",
request_body(content = GetDeploymentLog),
responses(
(status = 200, description = "The log", body = GetDeploymentLogResponse),
),
)]
pub fn get_deployment_log() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentLogResponse)]
#[error(mogh_error::Error)]
pub struct GetDeploymentLog {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
#[serde(default = "default_tail")]
pub tail: U64,
#[serde(default)]
pub timestamps: bool,
}
fn default_tail() -> u64 {
50
}
#[typeshare]
pub type GetDeploymentLogResponse = Log;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/SearchDeploymentLog",
description = "Search the deployment log's tail using `grep`.",
request_body(content = SearchDeploymentLog),
responses(
(status = 200, description = "The log", body = SearchDeploymentLogResponse),
),
)]
pub fn search_deployment_log() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(SearchDeploymentLogResponse)]
#[error(mogh_error::Error)]
pub struct SearchDeploymentLog {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
pub terms: Vec<String>,
#[serde(default)]
pub combinator: SearchCombinator,
#[serde(default)]
pub invert: bool,
#[serde(default)]
pub timestamps: bool,
}
#[typeshare]
pub type SearchDeploymentLogResponse = Log;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/GetDeploymentStats",
description = "Get the deployment container's stats using `docker stats`.",
request_body(content = GetDeploymentStats),
responses(
(status = 200, description = "The deployment stats", body = GetDeploymentStatsResponse),
),
)]
pub fn get_deployment_stats() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentStatsResponse)]
#[error(mogh_error::Error)]
pub struct GetDeploymentStats {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type GetDeploymentStatsResponse = ContainerStats;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/GetDeploymentActionState",
description = "Get current action state for the deployment.",
request_body(content = GetDeploymentActionState),
responses(
(status = 200, description = "The deployment action state", body = GetDeploymentActionStateResponse),
),
)]
pub fn get_deployment_action_state() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(DeploymentActionState)]
#[error(mogh_error::Error)]
pub struct GetDeploymentActionState {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type GetDeploymentActionStateResponse = DeploymentActionState;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/GetDeploymentsSummary",
description = "Gets a summary of data relating to all deployments.",
request_body(content = GetDeploymentsSummary),
responses(
(status = 200, description = "The deployments summary", body = GetDeploymentsSummaryResponse),
),
)]
pub fn get_deployments_summary() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentsSummaryResponse)]
#[error(mogh_error::Error)]
pub struct GetDeploymentsSummary {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct GetDeploymentsSummaryResponse {
pub total: I64,
pub running: I64,
pub stopped: I64,
pub not_deployed: I64,
pub unhealthy: I64,
pub unknown: I64,
}
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/ListCommonDeploymentExtraArgs",
description = "Gets a list of existing values used as extra args across other deployments.",
request_body(content = ListCommonDeploymentExtraArgs),
responses(
(status = 200, description = "The common extra args", body = ListCommonDeploymentExtraArgsResponse),
),
)]
pub fn list_common_deployment_extra_args() {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(ListCommonDeploymentExtraArgsResponse)]
#[error(mogh_error::Error)]
pub struct ListCommonDeploymentExtraArgs {
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListCommonDeploymentExtraArgsResponse = Vec<String>;