forked from github-starred/komodo
stop all containers on server action
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
use anyhow::anyhow;
|
||||
use async_trait::async_trait;
|
||||
use futures::future::join_all;
|
||||
use monitor_types::{
|
||||
entities::{
|
||||
build::Build,
|
||||
@@ -11,11 +12,15 @@ use monitor_types::{
|
||||
get_image_name, monitor_timestamp,
|
||||
requests::execute::*,
|
||||
};
|
||||
use mungos::mongodb::bson::doc;
|
||||
use periphery_client::requests;
|
||||
use resolver_api::Resolve;
|
||||
use serror::serialize_error_pretty;
|
||||
|
||||
use crate::{
|
||||
auth::RequestUser, helpers::resource::StateResource, state::State,
|
||||
auth::RequestUser,
|
||||
helpers::{make_update, resource::StateResource},
|
||||
state::State,
|
||||
};
|
||||
|
||||
#[async_trait]
|
||||
@@ -344,6 +349,95 @@ impl Resolve<StopContainer, RequestUser> for State {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Resolve<StopAllContainers, RequestUser> for State {
|
||||
async fn resolve(
|
||||
&self,
|
||||
StopAllContainers { server_id }: StopAllContainers,
|
||||
user: RequestUser,
|
||||
) -> anyhow::Result<Update> {
|
||||
let (server, status) =
|
||||
self.get_server_with_status(&server_id).await?;
|
||||
if status != ServerStatus::Ok {
|
||||
return Err(anyhow!(
|
||||
"cannot send action when server is unreachable or disabled"
|
||||
));
|
||||
}
|
||||
let deployments = self
|
||||
.db
|
||||
.deployments
|
||||
.get_some(
|
||||
doc! {
|
||||
"config.server_id": &server_id
|
||||
},
|
||||
None,
|
||||
)
|
||||
.await?;
|
||||
let inner = || async move {
|
||||
let mut update = make_update(
|
||||
ResourceTarget::Server(server.id),
|
||||
Operation::StopAllContainers,
|
||||
&user,
|
||||
);
|
||||
let futures =
|
||||
deployments.iter().map(|deployment| async {
|
||||
(
|
||||
self.resolve(
|
||||
StopContainer {
|
||||
deployment_id: deployment.id.clone(),
|
||||
signal: None,
|
||||
time: None,
|
||||
},
|
||||
user.clone(),
|
||||
)
|
||||
.await,
|
||||
deployment.name.clone(),
|
||||
deployment.id.clone(),
|
||||
)
|
||||
});
|
||||
let results = join_all(futures).await;
|
||||
let deployment_names = deployments
|
||||
.iter()
|
||||
.map(|d| format!("{} ({})", d.name, d.id))
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
update.push_simple_log(
|
||||
"stopping containers",
|
||||
deployment_names,
|
||||
);
|
||||
for (res, name, id) in results {
|
||||
if let Err(e) = res {
|
||||
update.push_error_log(
|
||||
"stop container failure",
|
||||
format!("failed to stop container {name} ({id})\n\n{}", serialize_error_pretty(e))
|
||||
)
|
||||
}
|
||||
}
|
||||
update.finalize();
|
||||
self.add_update(update.clone()).await?;
|
||||
Ok(update)
|
||||
};
|
||||
|
||||
self.action_states
|
||||
.server
|
||||
.update_entry(server_id.to_string(), |entry| {
|
||||
entry.stopping_containers = true;
|
||||
})
|
||||
.await;
|
||||
|
||||
let res = inner().await;
|
||||
|
||||
self.action_states
|
||||
.server
|
||||
.update_entry(server_id, |entry| {
|
||||
entry.stopping_containers = false;
|
||||
})
|
||||
.await;
|
||||
|
||||
res
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl Resolve<RemoveContainer, RequestUser> for State {
|
||||
async fn resolve(
|
||||
|
||||
@@ -38,6 +38,7 @@ enum ExecuteRequest {
|
||||
Deploy(Deploy),
|
||||
StartContainer(StartContainer),
|
||||
StopContainer(StopContainer),
|
||||
StopAllContainers(StopAllContainers),
|
||||
RemoveContainer(RemoveContainer),
|
||||
|
||||
// ==== BUILD ====
|
||||
|
||||
@@ -161,6 +161,7 @@ export type ExecuteResponses = {
|
||||
Deploy: Types.Update;
|
||||
StartContainer: Types.Update;
|
||||
StopContainer: Types.Update;
|
||||
StopAllContainers: Types.Update;
|
||||
RemoveContainer: Types.Update;
|
||||
|
||||
// ==== BUILD ====
|
||||
|
||||
@@ -159,6 +159,7 @@ export enum RestartMode {
|
||||
|
||||
export interface DeploymentConfig {
|
||||
server_id?: string;
|
||||
send_alerts: boolean;
|
||||
image?: DeploymentImage;
|
||||
skip_secret_interp?: boolean;
|
||||
redeploy_on_build?: boolean;
|
||||
@@ -221,6 +222,7 @@ export interface ServerConfig {
|
||||
address: string;
|
||||
enabled: boolean;
|
||||
auto_prune: boolean;
|
||||
send_alerts: boolean;
|
||||
region?: string;
|
||||
cpu_warning: number;
|
||||
cpu_critical: number;
|
||||
@@ -241,6 +243,7 @@ export enum ServerStatus {
|
||||
export interface ServerListItemInfo {
|
||||
status: ServerStatus;
|
||||
region: string;
|
||||
send_alerts: boolean;
|
||||
}
|
||||
|
||||
export type ServerListItem = ResourceListItem<ServerListItemInfo>;
|
||||
@@ -879,6 +882,10 @@ export interface StopContainer {
|
||||
time?: number;
|
||||
}
|
||||
|
||||
export interface StopAllContainers {
|
||||
server_id: string;
|
||||
}
|
||||
|
||||
export interface RemoveContainer {
|
||||
deployment_id: string;
|
||||
signal?: TerminationSignal;
|
||||
@@ -1487,6 +1494,7 @@ export type ExecuteRequest =
|
||||
| { type: "Deploy", params: Deploy }
|
||||
| { type: "StartContainer", params: StartContainer }
|
||||
| { type: "StopContainer", params: StopContainer }
|
||||
| { type: "StopAllContainers", params: StopAllContainers }
|
||||
| { type: "RemoveContainer", params: RemoveContainer }
|
||||
| { type: "RunBuild", params: RunBuild }
|
||||
| { type: "CloneRepo", params: CloneRepo }
|
||||
|
||||
@@ -333,6 +333,7 @@ pub enum Operation {
|
||||
DeleteDeployment,
|
||||
DeployContainer,
|
||||
StopContainer,
|
||||
StopAllContainers,
|
||||
StartContainer,
|
||||
RemoveContainer,
|
||||
RenameDeployment,
|
||||
|
||||
@@ -134,6 +134,7 @@ pub struct ServerActionState {
|
||||
pub pruning_networks: bool,
|
||||
pub pruning_containers: bool,
|
||||
pub pruning_images: bool,
|
||||
pub stopping_containers: bool,
|
||||
}
|
||||
|
||||
#[typeshare]
|
||||
|
||||
@@ -59,12 +59,20 @@ pub struct Update {
|
||||
}
|
||||
|
||||
impl Update {
|
||||
pub fn push_simple_log(&mut self, stage: &str, msg: String) {
|
||||
self.logs.push(Log::simple(stage, msg));
|
||||
pub fn push_simple_log(
|
||||
&mut self,
|
||||
stage: &str,
|
||||
msg: impl Into<String>,
|
||||
) {
|
||||
self.logs.push(Log::simple(stage, msg.into()));
|
||||
}
|
||||
|
||||
pub fn push_error_log(&mut self, stage: &str, msg: String) {
|
||||
self.logs.push(Log::error(stage, msg));
|
||||
pub fn push_error_log(
|
||||
&mut self,
|
||||
stage: &str,
|
||||
msg: impl Into<String>,
|
||||
) {
|
||||
self.logs.push(Log::error(stage, msg.into()));
|
||||
}
|
||||
|
||||
pub fn in_progress(&mut self) {
|
||||
|
||||
@@ -8,7 +8,9 @@ pub trait MonitorAuthRequest: HasResponse {}
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorAuthRequest)]
|
||||
#[response(GetLoginOptionsResponse)]
|
||||
pub struct GetLoginOptions {}
|
||||
@@ -24,7 +26,9 @@ pub struct GetLoginOptionsResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorAuthRequest)]
|
||||
#[response(CreateLocalUserResponse)]
|
||||
pub struct CreateLocalUser {
|
||||
@@ -41,7 +45,9 @@ pub struct CreateLocalUserResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorAuthRequest)]
|
||||
#[response(LoginLocalUserResponse)]
|
||||
pub struct LoginLocalUser {
|
||||
@@ -58,7 +64,9 @@ pub struct LoginLocalUserResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorAuthRequest)]
|
||||
#[response(ExchangeForJwtResponse)]
|
||||
pub struct ExchangeForJwt {
|
||||
@@ -74,7 +82,9 @@ pub struct ExchangeForJwtResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorAuthRequest)]
|
||||
#[response(LoginWithSecretResponse)]
|
||||
pub struct LoginWithSecret {
|
||||
|
||||
@@ -10,7 +10,9 @@ use super::MonitorExecuteRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct RunBuild {
|
||||
@@ -20,7 +22,9 @@ pub struct RunBuild {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(CancelBuildResponse)]
|
||||
pub struct CancelBuild {
|
||||
|
||||
@@ -12,7 +12,9 @@ use super::MonitorExecuteRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct Deploy {
|
||||
@@ -24,7 +26,9 @@ pub struct Deploy {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct StartContainer {
|
||||
@@ -34,7 +38,9 @@ pub struct StartContainer {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct StopContainer {
|
||||
@@ -43,10 +49,22 @@ pub struct StopContainer {
|
||||
pub time: Option<i32>,
|
||||
}
|
||||
|
||||
#[typeshare]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct StopAllContainers {
|
||||
pub server_id: String,
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct RemoveContainer {
|
||||
|
||||
@@ -9,4 +9,4 @@ pub use repo::*;
|
||||
use resolver_api::HasResponse;
|
||||
pub use server::*;
|
||||
|
||||
pub trait MonitorExecuteRequest: HasResponse {}
|
||||
pub trait MonitorExecuteRequest: HasResponse {}
|
||||
|
||||
@@ -10,7 +10,9 @@ use super::MonitorExecuteRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct CloneRepo {
|
||||
@@ -20,7 +22,9 @@ pub struct CloneRepo {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorExecuteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct PullRepo {
|
||||
|
||||
@@ -18,7 +18,9 @@ use super::MonitorReadRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuildResponse)]
|
||||
pub struct GetBuild {
|
||||
@@ -31,7 +33,9 @@ pub type GetBuildResponse = Build;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(ListBuildsResponse)]
|
||||
pub struct ListBuilds {
|
||||
@@ -44,7 +48,9 @@ pub type ListBuildsResponse = Vec<BuildListItem>;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuildActionStateResponse)]
|
||||
pub struct GetBuildActionState {
|
||||
@@ -57,7 +63,9 @@ pub type GetBuildActionStateResponse = BuildActionState;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuildsSummaryResponse)]
|
||||
pub struct GetBuildsSummary {}
|
||||
@@ -71,7 +79,9 @@ pub struct GetBuildsSummaryResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuildMonthlyStatsResponse)]
|
||||
pub struct GetBuildMonthlyStats {
|
||||
@@ -123,7 +133,15 @@ impl GetBuildMonthlyStatsResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize,
|
||||
Deserialize,
|
||||
Debug,
|
||||
Clone,
|
||||
Default,
|
||||
Request,
|
||||
EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuildVersionsResponse)]
|
||||
pub struct GetBuildVersions {
|
||||
|
||||
@@ -13,7 +13,9 @@ use super::MonitorReadRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuilderResponse)]
|
||||
pub struct GetBuilder {
|
||||
@@ -26,7 +28,9 @@ pub type GetBuilderResponse = Builder;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(ListBuildersResponse)]
|
||||
pub struct ListBuilders {
|
||||
@@ -39,7 +43,9 @@ pub type ListBuildersResponse = Vec<BuilderListItem>;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuildersSummaryResponse)]
|
||||
pub struct GetBuildersSummary {}
|
||||
@@ -53,7 +59,9 @@ pub struct GetBuildersSummaryResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetBuilderAvailableAccountsResponse)]
|
||||
pub struct GetBuilderAvailableAccounts {
|
||||
|
||||
@@ -19,7 +19,9 @@ use super::MonitorReadRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetDeploymentResponse)]
|
||||
pub struct GetDeployment {
|
||||
@@ -32,7 +34,9 @@ pub type GetDeploymentResponse = Deployment;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(ListDeploymentsResponse)]
|
||||
pub struct ListDeployments {
|
||||
@@ -45,7 +49,9 @@ pub type ListDeploymentsResponse = Vec<DeploymentListItem>;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetDeploymentStatusResponse)]
|
||||
pub struct GetDeploymentStatus {
|
||||
@@ -62,7 +68,9 @@ pub struct GetDeploymentStatusResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetLogResponse)]
|
||||
pub struct GetLog {
|
||||
@@ -81,7 +89,9 @@ pub type GetLogResponse = Log;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetDeployedVersionResponse)]
|
||||
pub struct GetDeployedVersion {
|
||||
@@ -97,7 +107,9 @@ pub struct GetDeployedVersionResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetDeploymentStatsResponse)]
|
||||
pub struct GetDeploymentStats {
|
||||
@@ -110,7 +122,9 @@ pub type GetDeploymentStatsResponse = DockerContainerStats;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(DeploymentActionState)]
|
||||
pub struct GetDeploymentActionState {
|
||||
@@ -123,7 +137,9 @@ pub type GetDeploymentActionStateResponse = DeploymentActionState;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetDeploymentsSummaryResponse)]
|
||||
pub struct GetDeploymentsSummary {}
|
||||
|
||||
@@ -13,7 +13,9 @@ use super::MonitorReadRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(Repo)]
|
||||
pub struct GetRepo {
|
||||
@@ -26,7 +28,9 @@ pub type GetRepoResponse = Repo;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(Vec<RepoListItem>)]
|
||||
pub struct ListRepos {
|
||||
@@ -39,7 +43,9 @@ pub type ListReposResponse = Vec<RepoListItem>;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetRepoActionStateResponse)]
|
||||
pub struct GetRepoActionState {
|
||||
@@ -52,7 +58,9 @@ pub type GetRepoActionStateResponse = RepoActionState;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorReadRequest)]
|
||||
#[response(GetReposSummaryResponse)]
|
||||
pub struct GetReposSummary {}
|
||||
|
||||
@@ -10,7 +10,9 @@ use super::MonitorWriteRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Alerter)]
|
||||
pub struct CreateAlerter {
|
||||
@@ -21,7 +23,9 @@ pub struct CreateAlerter {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Alerter)]
|
||||
pub struct CopyAlerter {
|
||||
@@ -32,7 +36,9 @@ pub struct CopyAlerter {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Alerter)]
|
||||
pub struct DeleteAlerter {
|
||||
@@ -42,7 +48,9 @@ pub struct DeleteAlerter {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Alerter)]
|
||||
pub struct UpdateAlerter {
|
||||
|
||||
@@ -10,7 +10,9 @@ use super::MonitorWriteRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Builder)]
|
||||
pub struct CreateBuilder {
|
||||
@@ -21,7 +23,9 @@ pub struct CreateBuilder {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Builder)]
|
||||
pub struct CopyBuilder {
|
||||
@@ -32,7 +36,9 @@ pub struct CopyBuilder {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Builder)]
|
||||
pub struct DeleteBuilder {
|
||||
@@ -42,7 +48,9 @@ pub struct DeleteBuilder {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Builder)]
|
||||
pub struct UpdateBuilder {
|
||||
|
||||
@@ -16,7 +16,9 @@ type _PartialDeploymentConfig = PartialDeploymentConfig;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Deployment)]
|
||||
pub struct CreateDeployment {
|
||||
@@ -27,7 +29,9 @@ pub struct CreateDeployment {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Deployment)]
|
||||
pub struct CopyDeployment {
|
||||
@@ -38,7 +42,9 @@ pub struct CopyDeployment {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Deployment)]
|
||||
pub struct DeleteDeployment {
|
||||
@@ -48,7 +54,9 @@ pub struct DeleteDeployment {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Deployment)]
|
||||
pub struct UpdateDeployment {
|
||||
@@ -59,7 +67,9 @@ pub struct UpdateDeployment {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct RenameDeployment {
|
||||
|
||||
@@ -8,7 +8,9 @@ use crate::entities::update::ResourceTarget;
|
||||
use super::MonitorWriteRequest;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(UpdateDescriptionResponse)]
|
||||
pub struct UpdateDescription {
|
||||
|
||||
@@ -8,7 +8,9 @@ use crate::entities::{builder::AwsBuilderConfig, update::Update};
|
||||
use super::MonitorWriteRequest;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct LaunchServer {
|
||||
|
||||
@@ -11,7 +11,9 @@ use crate::entities::{
|
||||
use super::MonitorWriteRequest;
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct UpdateUserPermissionsOnTarget {
|
||||
@@ -21,7 +23,9 @@ pub struct UpdateUserPermissionsOnTarget {
|
||||
}
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct UpdateUserPermissions {
|
||||
|
||||
@@ -13,7 +13,9 @@ type _PartialRepoConfig = PartialRepoConfig;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Repo)]
|
||||
pub struct CreateRepo {
|
||||
@@ -24,7 +26,9 @@ pub struct CreateRepo {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Repo)]
|
||||
pub struct CopyRepo {
|
||||
@@ -35,7 +39,9 @@ pub struct CopyRepo {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Repo)]
|
||||
pub struct DeleteRepo {
|
||||
@@ -45,7 +51,9 @@ pub struct DeleteRepo {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Repo)]
|
||||
pub struct UpdateRepo {
|
||||
|
||||
@@ -10,7 +10,9 @@ use super::MonitorWriteRequest;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(CreateLoginSecretResponse)]
|
||||
pub struct CreateLoginSecret {
|
||||
@@ -27,7 +29,9 @@ pub struct CreateLoginSecretResponse {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(DeleteLoginSecretResponse)]
|
||||
pub struct DeleteLoginSecret {
|
||||
|
||||
@@ -16,7 +16,9 @@ type _PartialServerConfig = PartialServerConfig;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Server)]
|
||||
pub struct CreateServer {
|
||||
@@ -27,7 +29,9 @@ pub struct CreateServer {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Server)]
|
||||
pub struct DeleteServer {
|
||||
@@ -37,7 +41,9 @@ pub struct DeleteServer {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Server)]
|
||||
pub struct UpdateServer {
|
||||
@@ -48,7 +54,9 @@ pub struct UpdateServer {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct RenameServer {
|
||||
@@ -59,7 +67,9 @@ pub struct RenameServer {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct CreateNetwork {
|
||||
@@ -70,7 +80,9 @@ pub struct CreateNetwork {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(Update)]
|
||||
pub struct DeleteNetwork {
|
||||
|
||||
@@ -16,7 +16,9 @@ type _PartialCustomTag = PartialCustomTag;
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(CustomTag)]
|
||||
pub struct CreateTag {
|
||||
@@ -32,7 +34,9 @@ pub struct CreateTag {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(CustomTag)]
|
||||
pub struct DeleteTag {
|
||||
@@ -42,7 +46,9 @@ pub struct DeleteTag {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(CustomTag)]
|
||||
pub struct UpdateTag {
|
||||
@@ -53,7 +59,9 @@ pub struct UpdateTag {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(())]
|
||||
pub struct AddTags {
|
||||
@@ -64,7 +72,9 @@ pub struct AddTags {
|
||||
//
|
||||
|
||||
#[typeshare]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Request, EmptyTraits)]
|
||||
#[derive(
|
||||
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
|
||||
)]
|
||||
#[empty_traits(MonitorWriteRequest)]
|
||||
#[response(())]
|
||||
pub struct RemoveTags {
|
||||
|
||||
Reference in New Issue
Block a user