stop all containers on server action

This commit is contained in:
mbecker20
2023-10-09 21:57:11 -04:00
parent 57f0404a02
commit 69bb7ef1fd
26 changed files with 343 additions and 75 deletions

View File

@@ -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(

View File

@@ -38,6 +38,7 @@ enum ExecuteRequest {
Deploy(Deploy),
StartContainer(StartContainer),
StopContainer(StopContainer),
StopAllContainers(StopAllContainers),
RemoveContainer(RemoveContainer),
// ==== BUILD ====

View File

@@ -161,6 +161,7 @@ export type ExecuteResponses = {
Deploy: Types.Update;
StartContainer: Types.Update;
StopContainer: Types.Update;
StopAllContainers: Types.Update;
RemoveContainer: Types.Update;
// ==== BUILD ====

View File

@@ -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 }

View File

@@ -333,6 +333,7 @@ pub enum Operation {
DeleteDeployment,
DeployContainer,
StopContainer,
StopAllContainers,
StartContainer,
RemoveContainer,
RenameDeployment,

View File

@@ -134,6 +134,7 @@ pub struct ServerActionState {
pub pruning_networks: bool,
pub pruning_containers: bool,
pub pruning_images: bool,
pub stopping_containers: bool,
}
#[typeshare]

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -9,4 +9,4 @@ pub use repo::*;
use resolver_api::HasResponse;
pub use server::*;
pub trait MonitorExecuteRequest: HasResponse {}
pub trait MonitorExecuteRequest: HasResponse {}

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {}

View File

@@ -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 {}

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {