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),
UpdateServer(UpdateServer),
RenameServer(RenameServer),
CreateNetwork(CreateNetwork),
DeleteNetwork(DeleteNetwork),
// ==== DEPLOYMENT ====
CreateDeployment(CreateDeployment),

View File

@@ -10,9 +10,10 @@ use monitor_types::{
requests::write::*,
};
use mungos::mongodb::bson::{doc, to_bson};
use periphery_client::requests;
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]
impl Resolve<CreateServer, RequestUser> for State {
@@ -221,3 +222,65 @@ impl Resolve<RenameServer, RequestUser> for State {
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;
UpdateServer: Types.Server;
RenameServer: Types.Update;
CreateNetwork: Types.Update;
DeleteNetwork: Types.Update;
// ==== DEPLOYMENT ====
CreateDeployment: Types.Deployment;

View File

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

View File

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

View File

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