diff --git a/bin/core/src/requests/execute/deployment.rs b/bin/core/src/requests/execute/deployment.rs index 134db4d82..3a80a41c1 100644 --- a/bin/core/src/requests/execute/deployment.rs +++ b/bin/core/src/requests/execute/deployment.rs @@ -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 for State { } } +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + StopAllContainers { server_id }: StopAllContainers, + user: RequestUser, + ) -> anyhow::Result { + 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::>() + .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 for State { async fn resolve( diff --git a/bin/core/src/requests/execute/mod.rs b/bin/core/src/requests/execute/mod.rs index fc0fc4988..c18a633de 100644 --- a/bin/core/src/requests/execute/mod.rs +++ b/bin/core/src/requests/execute/mod.rs @@ -38,6 +38,7 @@ enum ExecuteRequest { Deploy(Deploy), StartContainer(StartContainer), StopContainer(StopContainer), + StopAllContainers(StopAllContainers), RemoveContainer(RemoveContainer), // ==== BUILD ==== diff --git a/client/ts/src/responses.ts b/client/ts/src/responses.ts index 990bff20d..b89330985 100644 --- a/client/ts/src/responses.ts +++ b/client/ts/src/responses.ts @@ -161,6 +161,7 @@ export type ExecuteResponses = { Deploy: Types.Update; StartContainer: Types.Update; StopContainer: Types.Update; + StopAllContainers: Types.Update; RemoveContainer: Types.Update; // ==== BUILD ==== diff --git a/client/ts/src/types.ts b/client/ts/src/types.ts index 7e7d79fff..0e83471fe 100644 --- a/client/ts/src/types.ts +++ b/client/ts/src/types.ts @@ -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; @@ -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 } diff --git a/lib/types/src/entities/mod.rs b/lib/types/src/entities/mod.rs index f3f7afec6..f4e0159bc 100644 --- a/lib/types/src/entities/mod.rs +++ b/lib/types/src/entities/mod.rs @@ -333,6 +333,7 @@ pub enum Operation { DeleteDeployment, DeployContainer, StopContainer, + StopAllContainers, StartContainer, RemoveContainer, RenameDeployment, diff --git a/lib/types/src/entities/server/mod.rs b/lib/types/src/entities/server/mod.rs index 216fe52b5..030dca95a 100644 --- a/lib/types/src/entities/server/mod.rs +++ b/lib/types/src/entities/server/mod.rs @@ -134,6 +134,7 @@ pub struct ServerActionState { pub pruning_networks: bool, pub pruning_containers: bool, pub pruning_images: bool, + pub stopping_containers: bool, } #[typeshare] diff --git a/lib/types/src/entities/update.rs b/lib/types/src/entities/update.rs index 3867af43e..1644ab405 100644 --- a/lib/types/src/entities/update.rs +++ b/lib/types/src/entities/update.rs @@ -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, + ) { + 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, + ) { + self.logs.push(Log::error(stage, msg.into())); } pub fn in_progress(&mut self) { diff --git a/lib/types/src/requests/auth.rs b/lib/types/src/requests/auth.rs index fac08217c..de3449789 100644 --- a/lib/types/src/requests/auth.rs +++ b/lib/types/src/requests/auth.rs @@ -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 { diff --git a/lib/types/src/requests/execute/build.rs b/lib/types/src/requests/execute/build.rs index 0f011ff05..7cfbdc9e7 100644 --- a/lib/types/src/requests/execute/build.rs +++ b/lib/types/src/requests/execute/build.rs @@ -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 { diff --git a/lib/types/src/requests/execute/deployment.rs b/lib/types/src/requests/execute/deployment.rs index b059715ef..e5c026ebd 100644 --- a/lib/types/src/requests/execute/deployment.rs +++ b/lib/types/src/requests/execute/deployment.rs @@ -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, } +#[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 { diff --git a/lib/types/src/requests/execute/mod.rs b/lib/types/src/requests/execute/mod.rs index c8559af58..c53843e26 100644 --- a/lib/types/src/requests/execute/mod.rs +++ b/lib/types/src/requests/execute/mod.rs @@ -9,4 +9,4 @@ pub use repo::*; use resolver_api::HasResponse; pub use server::*; -pub trait MonitorExecuteRequest: HasResponse {} \ No newline at end of file +pub trait MonitorExecuteRequest: HasResponse {} diff --git a/lib/types/src/requests/execute/repo.rs b/lib/types/src/requests/execute/repo.rs index 2f7ef0335..bbb6b1c63 100644 --- a/lib/types/src/requests/execute/repo.rs +++ b/lib/types/src/requests/execute/repo.rs @@ -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 { diff --git a/lib/types/src/requests/read/build.rs b/lib/types/src/requests/read/build.rs index 45e59edb0..f0eec2be0 100644 --- a/lib/types/src/requests/read/build.rs +++ b/lib/types/src/requests/read/build.rs @@ -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; // #[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 { diff --git a/lib/types/src/requests/read/builder.rs b/lib/types/src/requests/read/builder.rs index faa2afb37..448526a48 100644 --- a/lib/types/src/requests/read/builder.rs +++ b/lib/types/src/requests/read/builder.rs @@ -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; // #[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 { diff --git a/lib/types/src/requests/read/deployment.rs b/lib/types/src/requests/read/deployment.rs index 5d4764a3b..20317fc60 100644 --- a/lib/types/src/requests/read/deployment.rs +++ b/lib/types/src/requests/read/deployment.rs @@ -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; // #[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 {} diff --git a/lib/types/src/requests/read/repo.rs b/lib/types/src/requests/read/repo.rs index 06774af65..27889e2e9 100644 --- a/lib/types/src/requests/read/repo.rs +++ b/lib/types/src/requests/read/repo.rs @@ -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)] pub struct ListRepos { @@ -39,7 +43,9 @@ pub type ListReposResponse = Vec; // #[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 {} diff --git a/lib/types/src/requests/write/alerter.rs b/lib/types/src/requests/write/alerter.rs index 793d8f2b7..74a1d7e40 100644 --- a/lib/types/src/requests/write/alerter.rs +++ b/lib/types/src/requests/write/alerter.rs @@ -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 { diff --git a/lib/types/src/requests/write/builder.rs b/lib/types/src/requests/write/builder.rs index deb6e43ec..e1840c072 100644 --- a/lib/types/src/requests/write/builder.rs +++ b/lib/types/src/requests/write/builder.rs @@ -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 { diff --git a/lib/types/src/requests/write/deployment.rs b/lib/types/src/requests/write/deployment.rs index 294a3ac9a..1ef96d0a2 100644 --- a/lib/types/src/requests/write/deployment.rs +++ b/lib/types/src/requests/write/deployment.rs @@ -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 { diff --git a/lib/types/src/requests/write/description.rs b/lib/types/src/requests/write/description.rs index c7de9e7d1..a3f6ac4fa 100644 --- a/lib/types/src/requests/write/description.rs +++ b/lib/types/src/requests/write/description.rs @@ -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 { diff --git a/lib/types/src/requests/write/launch.rs b/lib/types/src/requests/write/launch.rs index 634c8a4d1..eb24c057d 100644 --- a/lib/types/src/requests/write/launch.rs +++ b/lib/types/src/requests/write/launch.rs @@ -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 { diff --git a/lib/types/src/requests/write/permissions.rs b/lib/types/src/requests/write/permissions.rs index 6f2b43471..37136abc1 100644 --- a/lib/types/src/requests/write/permissions.rs +++ b/lib/types/src/requests/write/permissions.rs @@ -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 { diff --git a/lib/types/src/requests/write/repo.rs b/lib/types/src/requests/write/repo.rs index 0c769d17f..c6d97e447 100644 --- a/lib/types/src/requests/write/repo.rs +++ b/lib/types/src/requests/write/repo.rs @@ -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 { diff --git a/lib/types/src/requests/write/secret.rs b/lib/types/src/requests/write/secret.rs index 96874bf6e..6d034744d 100644 --- a/lib/types/src/requests/write/secret.rs +++ b/lib/types/src/requests/write/secret.rs @@ -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 { diff --git a/lib/types/src/requests/write/server.rs b/lib/types/src/requests/write/server.rs index 375f4c8e8..b177dd4f9 100644 --- a/lib/types/src/requests/write/server.rs +++ b/lib/types/src/requests/write/server.rs @@ -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 { diff --git a/lib/types/src/requests/write/tags.rs b/lib/types/src/requests/write/tags.rs index 6ace739fb..fb5967cba 100644 --- a/lib/types/src/requests/write/tags.rs +++ b/lib/types/src/requests/write/tags.rs @@ -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 {