Merge branch 'next' of https://github.com/mbecker20/monitor into next

This commit is contained in:
karamvir
2023-08-09 21:36:42 -07:00
6 changed files with 78 additions and 5 deletions

View File

@@ -53,6 +53,8 @@ enum WriteRequest {
DeleteServer(DeleteServer), DeleteServer(DeleteServer),
UpdateServer(UpdateServer), UpdateServer(UpdateServer),
RenameServer(RenameServer), RenameServer(RenameServer),
CreateNetwork(CreateNetwork),
DeleteNetwork(DeleteNetwork),
// ==== DEPLOYMENT ==== // ==== DEPLOYMENT ====
CreateDeployment(CreateDeployment), CreateDeployment(CreateDeployment),

View File

@@ -10,9 +10,10 @@ use monitor_types::{
requests::write::*, requests::write::*,
}; };
use mungos::mongodb::bson::{doc, to_bson}; use mungos::mongodb::bson::{doc, to_bson};
use periphery_client::requests;
use resolver_api::Resolve; use resolver_api::Resolve;
use crate::{auth::RequestUser, resource::StateResource, state::State}; use crate::{auth::RequestUser, helpers::make_update, resource::StateResource, state::State};
#[async_trait] #[async_trait]
impl Resolve<CreateServer, RequestUser> for State { impl Resolve<CreateServer, RequestUser> for State {
@@ -221,3 +222,65 @@ impl Resolve<RenameServer, RequestUser> for State {
Ok(update) Ok(update)
} }
} }
#[async_trait]
impl Resolve<CreateNetwork, RequestUser> for State {
async fn resolve(
&self,
CreateNetwork { server_id, name }: CreateNetwork,
user: RequestUser,
) -> anyhow::Result<Update> {
let server: Server = self
.get_resource_check_permissions(&server_id, &user, PermissionLevel::Update)
.await?;
let mut update = make_update(&server, Operation::CreateNetwork, &user);
update.status = UpdateStatus::InProgress;
update.id = self.add_update(update.clone()).await?;
match self
.periphery_client(&server)
.request(requests::CreateNetwork { name, driver: None })
.await
{
Ok(log) => update.logs.push(log),
Err(e) => update.push_error_log("create network", format!("{e:#?}")),
};
update.finalize();
self.update_update(update.clone()).await?;
Ok(update)
}
}
#[async_trait]
impl Resolve<DeleteNetwork, RequestUser> for State {
async fn resolve(
&self,
DeleteNetwork { server_id, name }: DeleteNetwork,
user: RequestUser,
) -> anyhow::Result<Update> {
let server: Server = self
.get_resource_check_permissions(&server_id, &user, PermissionLevel::Update)
.await?;
let mut update = make_update(&server, Operation::DeleteNetwork, &user);
update.status = UpdateStatus::InProgress;
update.id = self.add_update(update.clone()).await?;
match self
.periphery_client(&server)
.request(requests::DeleteNetwork { name })
.await
{
Ok(log) => update.logs.push(log),
Err(e) => update.push_error_log("delete network", format!("{e:#?}")),
};
update.finalize();
self.update_update(update.clone()).await?;
Ok(update)
}
}

View File

@@ -104,6 +104,8 @@ export type WriteResponses = {
DeleteServer: Types.Server; DeleteServer: Types.Server;
UpdateServer: Types.Server; UpdateServer: Types.Server;
RenameServer: Types.Update; RenameServer: Types.Update;
CreateNetwork: Types.Update;
DeleteNetwork: Types.Update;
// ==== DEPLOYMENT ==== // ==== DEPLOYMENT ====
CreateDeployment: Types.Deployment; CreateDeployment: Types.Deployment;

View File

@@ -512,6 +512,8 @@ export enum Operation {
PruneImagesServer = "PruneImagesServer", PruneImagesServer = "PruneImagesServer",
PruneContainersServer = "PruneContainersServer", PruneContainersServer = "PruneContainersServer",
PruneNetworksServer = "PruneNetworksServer", PruneNetworksServer = "PruneNetworksServer",
CreateNetwork = "CreateNetwork",
DeleteNetwork = "DeleteNetwork",
CreateBuild = "CreateBuild", CreateBuild = "CreateBuild",
UpdateBuild = "UpdateBuild", UpdateBuild = "UpdateBuild",
DeleteBuild = "DeleteBuild", DeleteBuild = "DeleteBuild",
@@ -1238,12 +1240,12 @@ export interface RenameServer {
} }
export interface CreateNetwork { export interface CreateNetwork {
id: string; server_id: string;
name: string; name: string;
} }
export interface DeleteNetwork { export interface DeleteNetwork {
id: string; server_id: string;
name: string; name: string;
} }
@@ -1370,6 +1372,8 @@ export type WriteRequest =
| { type: "DeleteServer", params: DeleteServer } | { type: "DeleteServer", params: DeleteServer }
| { type: "UpdateServer", params: UpdateServer } | { type: "UpdateServer", params: UpdateServer }
| { type: "RenameServer", params: RenameServer } | { type: "RenameServer", params: RenameServer }
| { type: "CreateNetwork", params: CreateNetwork }
| { type: "DeleteNetwork", params: DeleteNetwork }
| { type: "CreateDeployment", params: CreateDeployment } | { type: "CreateDeployment", params: CreateDeployment }
| { type: "CopyDeployment", params: CopyDeployment } | { type: "CopyDeployment", params: CopyDeployment }
| { type: "DeleteDeployment", params: DeleteDeployment } | { type: "DeleteDeployment", params: DeleteDeployment }

View File

@@ -274,6 +274,8 @@ pub enum Operation {
PruneImagesServer, PruneImagesServer,
PruneContainersServer, PruneContainersServer,
PruneNetworksServer, PruneNetworksServer,
CreateNetwork,
DeleteNetwork,
// build // build
CreateBuild, CreateBuild,

View File

@@ -55,7 +55,7 @@ pub struct RenameServer {
#[derive(Serialize, Deserialize, Debug, Clone, Request)] #[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(Update)] #[response(Update)]
pub struct CreateNetwork { pub struct CreateNetwork {
pub id: String, pub server_id: String,
pub name: String, pub name: String,
} }
@@ -65,6 +65,6 @@ pub struct CreateNetwork {
#[derive(Serialize, Deserialize, Debug, Clone, Request)] #[derive(Serialize, Deserialize, Debug, Clone, Request)]
#[response(Update)] #[response(Update)]
pub struct DeleteNetwork { pub struct DeleteNetwork {
pub id: String, pub server_id: String,
pub name: String, pub name: String,
} }