mirror of
https://github.com/moghtech/komodo.git
synced 2026-03-11 17:44:19 -05:00
create procedure and update mungos
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -1363,9 +1363,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "mungos"
|
||||
version = "0.2.24"
|
||||
version = "0.2.26"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5d57f20ae0ed18b7813cf10a3031b5ea5b2c5f4488d4e0ab52cc6a3fe3e510fb"
|
||||
checksum = "9ac86e7d26ca046ef914a069d1185af3a82471d2aac3c8390e0cd5ece11ace41"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"futures",
|
||||
|
||||
@@ -17,7 +17,7 @@ axum-extra = { version = "0.4", features = ["spa"] }
|
||||
tower = { version = "0.4", features = ["full"] }
|
||||
tower-http = { version = "0.3", features = ["cors"] }
|
||||
slack = { package = "slack_client_rs", version = "0.0.7" }
|
||||
mungos = "0.2.24"
|
||||
mungos = "0.2.26"
|
||||
serde = "1.0"
|
||||
serde_derive = "1.0"
|
||||
serde_json = "1.0"
|
||||
|
||||
@@ -97,7 +97,13 @@ impl State {
|
||||
.periphery
|
||||
.container_remove(&server, &deployment.name)
|
||||
.await?;
|
||||
self.db.deployments.delete_one(deployment_id).await?;
|
||||
self.db
|
||||
.deployments
|
||||
.delete_one(deployment_id)
|
||||
.await
|
||||
.context(format!(
|
||||
"failed at deleting deployment at {deployment_id} from mongo"
|
||||
))?;
|
||||
let update = Update {
|
||||
target: UpdateTarget::System,
|
||||
operation: Operation::DeleteDeployment,
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
use anyhow::anyhow;
|
||||
use types::{traits::Permissioned, PermissionLevel, Procedure, ProcedureStage, Update};
|
||||
use anyhow::{anyhow, Context};
|
||||
use async_timing_util::unix_timestamp_ms;
|
||||
use helpers::to_monitor_name;
|
||||
use types::{
|
||||
traits::Permissioned, Log, Operation, PermissionLevel, Procedure, ProcedureStage, Update,
|
||||
UpdateTarget,
|
||||
};
|
||||
|
||||
use crate::{auth::RequestUser, state::State};
|
||||
|
||||
@@ -26,7 +31,34 @@ impl State {
|
||||
name: &str,
|
||||
user: &RequestUser,
|
||||
) -> anyhow::Result<Procedure> {
|
||||
todo!()
|
||||
let start_ts = unix_timestamp_ms() as i64;
|
||||
let procedure = Procedure {
|
||||
name: to_monitor_name(name),
|
||||
permissions: [(user.id.clone(), PermissionLevel::Write)]
|
||||
.into_iter()
|
||||
.collect(),
|
||||
created_at: start_ts,
|
||||
updated_at: start_ts,
|
||||
..Default::default()
|
||||
};
|
||||
let procedure_id = self
|
||||
.db
|
||||
.procedures
|
||||
.create_one(procedure)
|
||||
.await
|
||||
.context("failed to add procedure to db")?;
|
||||
let procedure = self.db.get_procedure(&procedure_id).await?;
|
||||
let update = Update {
|
||||
target: UpdateTarget::Procedure(procedure_id),
|
||||
operation: Operation::CreateProcedure,
|
||||
start_ts,
|
||||
end_ts: Some(unix_timestamp_ms() as i64),
|
||||
operator: user.id.clone(),
|
||||
success: true,
|
||||
..Default::default()
|
||||
};
|
||||
self.add_update(update).await?;
|
||||
Ok(procedure)
|
||||
}
|
||||
|
||||
pub async fn create_full_procedure(
|
||||
@@ -45,7 +77,30 @@ impl State {
|
||||
id: &str,
|
||||
user: &RequestUser,
|
||||
) -> anyhow::Result<Procedure> {
|
||||
todo!()
|
||||
let procedure = self
|
||||
.get_procedure_check_permissions(id, user, PermissionLevel::Write)
|
||||
.await?;
|
||||
let start_ts = unix_timestamp_ms() as i64;
|
||||
self.db
|
||||
.procedures
|
||||
.delete_one(id)
|
||||
.await
|
||||
.context(format!("failed at deleting procedure at {id} from mongo"))?;
|
||||
let update = Update {
|
||||
target: UpdateTarget::System,
|
||||
operation: Operation::DeleteProcedure,
|
||||
start_ts,
|
||||
end_ts: Some(unix_timestamp_ms() as i64),
|
||||
operator: user.id.clone(),
|
||||
logs: vec![Log::simple(
|
||||
"delete deployment",
|
||||
format!("deleted procedure {}", procedure.name),
|
||||
)],
|
||||
success: true,
|
||||
..Default::default()
|
||||
};
|
||||
self.add_update(update).await?;
|
||||
Ok(procedure)
|
||||
}
|
||||
|
||||
pub async fn update_procedure(
|
||||
|
||||
@@ -224,6 +224,12 @@ async fn user_can_see_update(
|
||||
.await?;
|
||||
(permissions, "build")
|
||||
}
|
||||
UpdateTarget::Procedure(procedure_id) => {
|
||||
let permissions = db_client
|
||||
.get_user_permission_on_procedure(user_id, procedure_id)
|
||||
.await?;
|
||||
(permissions, "procedure")
|
||||
}
|
||||
UpdateTarget::System => {
|
||||
return Err(anyhow!("user not admin, can't recieve system updates"))
|
||||
}
|
||||
|
||||
@@ -7,5 +7,5 @@ edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
types = { package = "monitor_types", path = "../types" }
|
||||
mungos = "0.2.24"
|
||||
mungos = "0.2.26"
|
||||
anyhow = "1.0"
|
||||
@@ -17,6 +17,7 @@ pub type UserId = String;
|
||||
pub type ServerId = String;
|
||||
pub type DeploymentId = String;
|
||||
pub type BuildId = String;
|
||||
pub type ProcedureId = String;
|
||||
|
||||
pub type GithubUsername = String;
|
||||
pub type GithubToken = String;
|
||||
@@ -635,6 +636,7 @@ pub enum UpdateTarget {
|
||||
Build(BuildId),
|
||||
Deployment(DeploymentId),
|
||||
Server(ServerId),
|
||||
Procedure(ProcedureId),
|
||||
}
|
||||
|
||||
impl Default for UpdateTarget {
|
||||
|
||||
Reference in New Issue
Block a user