From 4522ca4552867aa623fab1d516162f499ed68bd3 Mon Sep 17 00:00:00 2001 From: Elaina <48662592+oestradiol@users.noreply.github.com> Date: Fri, 16 Aug 2024 02:04:47 -0300 Subject: [PATCH] Refactors --- .gitignore | 1 + Traefik/.env.example | 0 bacon.toml | 0 guides/cloudflare/CLOUDFLARE.md | 0 guides/cloudflare/images/IMG_1.png | Bin guides/cloudflare/images/IMG_2.png | Bin guides/cloudflare/images/IMG_3.png | Bin guides/cloudflare/images/IMG_4.png | Bin guides/cloudflare/images/IMG_5.png | Bin guides/cloudflare/images/IMG_6.png | Bin rustfmt.toml | 0 src/business/mod.rs | 0 .../repositories/deployments/delete.rs | 10 +-- .../repositories/deployments/find_by_name.rs | 8 +-- .../deployments/find_by_repo_branch.rs | 10 +-- src/business/repositories/deployments/mod.rs | 0 .../repositories/deployments/retrieve_all.rs | 2 +- src/business/repositories/mod.rs | 0 src/business/services/deployments/check.rs | 10 +-- src/business/services/deployments/delete.rs | 4 +- src/business/services/deployments/get.rs | 2 +- src/business/services/deployments/get_logs.rs | 2 +- src/business/services/deployments/list.rs | 0 src/business/services/deployments/mod.rs | 0 src/business/services/deployments/new.rs | 37 ++++++----- src/business/services/mod.rs | 0 src/configs/environment.rs | 0 src/configs/mod.rs | 0 src/controllers/deployments/create.rs | 12 ++-- src/controllers/deployments/mod.rs | 0 src/modules/cloudflare/mod.rs | 0 .../cloudflare/types/add_dns_record.rs | 0 .../cloudflare/types/cloudflare_responses.rs | 0 .../cloudflare/types/delete_dns_record.rs | 0 src/modules/cloudflare/types/dns_record.rs | 0 src/modules/cloudflare/types/mod.rs | 0 src/modules/discord/mod.rs | 0 src/modules/docker/create_container.rs | 7 +-- src/modules/docker/delete_image.rs | 6 +- src/modules/docker/get_internal_port.rs | 23 +++---- src/modules/docker/get_logs.rs | 0 src/modules/docker/mod.rs | 0 src/modules/git/clone.rs | 4 +- src/modules/git/mod.rs | 0 src/modules/tar/mod.rs | 0 src/types/model/deployment.rs | 4 +- src/types/model/mod.rs | 0 src/types/other/mod.rs | 0 src/types/other/voyager_error.rs | 53 ---------------- src/types/view/create_deployment.rs | 0 src/types/view/delete_deployment.rs | 0 src/types/view/get_deployment.rs | 0 src/types/view/get_deployment_logs.rs | 0 src/types/view/get_deployments.rs | 0 src/types/view/logs.rs | 0 src/types/view/mod.rs | 0 src/utils/expect_error.rs | 0 src/utils/gen_traefik_labels.rs | 4 -- src/utils/get_free_port.rs | 58 +++++++++--------- src/utils/http_client/client_wrapper.rs | 0 src/utils/http_client/deserializable.rs | 0 src/utils/http_client/ensure_success.rs | 0 src/utils/http_client/generate_methods.rs | 0 src/utils/http_client/http_error.rs | 0 src/utils/http_client/mod.rs | 4 +- src/utils/mod.rs | 4 +- 66 files changed, 99 insertions(+), 166 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 Traefik/.env.example mode change 100644 => 100755 bacon.toml mode change 100644 => 100755 guides/cloudflare/CLOUDFLARE.md mode change 100644 => 100755 guides/cloudflare/images/IMG_1.png mode change 100644 => 100755 guides/cloudflare/images/IMG_2.png mode change 100644 => 100755 guides/cloudflare/images/IMG_3.png mode change 100644 => 100755 guides/cloudflare/images/IMG_4.png mode change 100644 => 100755 guides/cloudflare/images/IMG_5.png mode change 100644 => 100755 guides/cloudflare/images/IMG_6.png mode change 100644 => 100755 rustfmt.toml mode change 100644 => 100755 src/business/mod.rs mode change 100644 => 100755 src/business/repositories/deployments/mod.rs mode change 100644 => 100755 src/business/repositories/mod.rs mode change 100644 => 100755 src/business/services/deployments/check.rs mode change 100644 => 100755 src/business/services/deployments/delete.rs mode change 100644 => 100755 src/business/services/deployments/get.rs mode change 100644 => 100755 src/business/services/deployments/get_logs.rs mode change 100644 => 100755 src/business/services/deployments/list.rs mode change 100644 => 100755 src/business/services/deployments/mod.rs mode change 100644 => 100755 src/business/services/mod.rs mode change 100644 => 100755 src/configs/environment.rs mode change 100644 => 100755 src/configs/mod.rs mode change 100644 => 100755 src/controllers/deployments/mod.rs mode change 100644 => 100755 src/modules/cloudflare/mod.rs mode change 100644 => 100755 src/modules/cloudflare/types/add_dns_record.rs mode change 100644 => 100755 src/modules/cloudflare/types/cloudflare_responses.rs mode change 100644 => 100755 src/modules/cloudflare/types/delete_dns_record.rs mode change 100644 => 100755 src/modules/cloudflare/types/dns_record.rs mode change 100644 => 100755 src/modules/cloudflare/types/mod.rs mode change 100644 => 100755 src/modules/discord/mod.rs mode change 100644 => 100755 src/modules/docker/get_logs.rs mode change 100644 => 100755 src/modules/docker/mod.rs mode change 100644 => 100755 src/modules/git/mod.rs mode change 100644 => 100755 src/modules/tar/mod.rs mode change 100644 => 100755 src/types/model/deployment.rs mode change 100644 => 100755 src/types/model/mod.rs mode change 100644 => 100755 src/types/other/mod.rs delete mode 100755 src/types/other/voyager_error.rs mode change 100644 => 100755 src/types/view/create_deployment.rs mode change 100644 => 100755 src/types/view/delete_deployment.rs mode change 100644 => 100755 src/types/view/get_deployment.rs mode change 100644 => 100755 src/types/view/get_deployment_logs.rs mode change 100644 => 100755 src/types/view/get_deployments.rs mode change 100644 => 100755 src/types/view/logs.rs mode change 100644 => 100755 src/types/view/mod.rs mode change 100644 => 100755 src/utils/expect_error.rs mode change 100644 => 100755 src/utils/http_client/client_wrapper.rs mode change 100644 => 100755 src/utils/http_client/deserializable.rs mode change 100644 => 100755 src/utils/http_client/ensure_success.rs mode change 100644 => 100755 src/utils/http_client/generate_methods.rs mode change 100644 => 100755 src/utils/http_client/http_error.rs mode change 100644 => 100755 src/utils/http_client/mod.rs diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 78b02d9..854ddbe --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ target/ Logs/ +Deployments/ # Local environment .env diff --git a/Traefik/.env.example b/Traefik/.env.example old mode 100644 new mode 100755 diff --git a/bacon.toml b/bacon.toml old mode 100644 new mode 100755 diff --git a/guides/cloudflare/CLOUDFLARE.md b/guides/cloudflare/CLOUDFLARE.md old mode 100644 new mode 100755 diff --git a/guides/cloudflare/images/IMG_1.png b/guides/cloudflare/images/IMG_1.png old mode 100644 new mode 100755 diff --git a/guides/cloudflare/images/IMG_2.png b/guides/cloudflare/images/IMG_2.png old mode 100644 new mode 100755 diff --git a/guides/cloudflare/images/IMG_3.png b/guides/cloudflare/images/IMG_3.png old mode 100644 new mode 100755 diff --git a/guides/cloudflare/images/IMG_4.png b/guides/cloudflare/images/IMG_4.png old mode 100644 new mode 100755 diff --git a/guides/cloudflare/images/IMG_5.png b/guides/cloudflare/images/IMG_5.png old mode 100644 new mode 100755 diff --git a/guides/cloudflare/images/IMG_6.png b/guides/cloudflare/images/IMG_6.png old mode 100644 new mode 100755 diff --git a/rustfmt.toml b/rustfmt.toml old mode 100644 new mode 100755 diff --git a/src/business/mod.rs b/src/business/mod.rs old mode 100644 new mode 100755 diff --git a/src/business/repositories/deployments/delete.rs b/src/business/repositories/deployments/delete.rs index 42cd810..e7431c3 100755 --- a/src/business/repositories/deployments/delete.rs +++ b/src/business/repositories/deployments/delete.rs @@ -9,14 +9,14 @@ use axum::http::StatusCode; use mongodb::bson::{doc, oid::ObjectId}; use tracing::{event, Level}; -pub async fn delete(id: String) -> Result<(), VoyagerError> { +pub async fn delete(id: &str) -> Result<(), VoyagerError> { event!( Level::DEBUG, "Deleting deployment of id {id} from database." ); - let oid = ObjectId::from_str(id.as_str()) - .map_err(|e| VoyagerError::invalid_delete_id(Box::new(e), &id))?; + let oid = ObjectId::from_str(id) + .map_err(|e| VoyagerError::invalid_delete_id(Box::new(e), id))?; let result = REPOSITORIES_RUNTIME .spawn_handled( @@ -28,10 +28,10 @@ pub async fn delete(id: String) -> Result<(), VoyagerError> { .await?; let result = result.map_or_else( - |e| Err(VoyagerError::delete_mongo(Box::new(e), &id)), + |e| Err(VoyagerError::delete_mongo(Box::new(e), id)), |r| { if r.deleted_count == 0 { - Err(VoyagerError::delete(&id)) + Err(VoyagerError::delete(id)) } else { Ok(()) } diff --git a/src/business/repositories/deployments/find_by_name.rs b/src/business/repositories/deployments/find_by_name.rs index 379761f..93a82eb 100755 --- a/src/business/repositories/deployments/find_by_name.rs +++ b/src/business/repositories/deployments/find_by_name.rs @@ -7,22 +7,22 @@ use axum::http::StatusCode; use mongodb::bson::doc; use tracing::{event, Level}; -pub async fn find_by_name(name: String) -> Result, VoyagerError> { +pub async fn find_by_name(name: &str) -> Result, VoyagerError> { event!( Level::DEBUG, "Finding deployment with hostname {} in database", - &name + name ); let result = REPOSITORIES_RUNTIME .spawn_handled( "repositories::deployments::find_by_name", - DB_CONTEXT.deployments.find_one(doc! { "container_name": &name }, None), + DB_CONTEXT.deployments.find_one(doc! { "container_name": name }, None), ) .await?; let result = result.map_or_else( - |e| Err(VoyagerError::find_mongo_name(Box::new(e), &name)), + |e| Err(VoyagerError::find_mongo_name(Box::new(e), name)), |r| Ok(r), )?; diff --git a/src/business/repositories/deployments/find_by_repo_branch.rs b/src/business/repositories/deployments/find_by_repo_branch.rs index c7e126f..d8d9525 100755 --- a/src/business/repositories/deployments/find_by_repo_branch.rs +++ b/src/business/repositories/deployments/find_by_repo_branch.rs @@ -7,23 +7,23 @@ use axum::http::StatusCode; use mongodb::bson::doc; use tracing::{event, Level}; -pub async fn find_by_repo_branch(repo_url: String, branch: String) -> Result, VoyagerError> { +pub async fn find_by_repo_branch(repo_url: &str, branch: &str) -> Result, VoyagerError> { event!( Level::DEBUG, "Finding deployment with repo url {} and branch {} in database", - &repo_url, - &branch + repo_url, + branch ); let result = REPOSITORIES_RUNTIME .spawn_handled( "repositories::deployments::find_by_repo_branch", - DB_CONTEXT.deployments.find_one(doc! { "repo_url": &repo_url, "branch": &branch }, None), + DB_CONTEXT.deployments.find_one(doc! { "repo_url": repo_url, "branch": branch }, None), ) .await?; let result = result.map_or_else( - |e| Err(VoyagerError::find_mongo_repo_branch(Box::new(e), &repo_url, &branch)), + |e| Err(VoyagerError::find_mongo_repo_branch(Box::new(e), repo_url, branch)), |r| Ok(r), )?; diff --git a/src/business/repositories/deployments/mod.rs b/src/business/repositories/deployments/mod.rs old mode 100644 new mode 100755 diff --git a/src/business/repositories/deployments/retrieve_all.rs b/src/business/repositories/deployments/retrieve_all.rs index eb26d41..da8730c 100755 --- a/src/business/repositories/deployments/retrieve_all.rs +++ b/src/business/repositories/deployments/retrieve_all.rs @@ -24,7 +24,7 @@ pub async fn retrieve_all( let document = repo_url .map_or_else(|| doc! { }, |repo_url| branch.map_or_else(|| doc! {"repo_url": &repo_url}, |branch| - doc! {"repo_url": &repo_url, "branch": branch} + doc! {"repo_url": &repo_url, "branch": &branch} ) ); diff --git a/src/business/repositories/mod.rs b/src/business/repositories/mod.rs old mode 100644 new mode 100755 diff --git a/src/business/services/deployments/check.rs b/src/business/services/deployments/check.rs old mode 100644 new mode 100755 index 659fddf..ea0db9d --- a/src/business/services/deployments/check.rs +++ b/src/business/services/deployments/check.rs @@ -15,18 +15,18 @@ pub async fn check( ) -> Result<(), VoyagerError> { let final_branch: String; let mut log = format!("Checking if deployment exists. Host {host}, mode {mode}, repo_url {repo_url}"); - if let Some(branch) = branch.as_ref() { - final_branch = branch.clone(); + if let Some(branch) = branch { log = format!("{log}, branch {branch}"); + final_branch = branch; } else { - final_branch = "default".to_string(); log = format!("{log}, branch default"); + final_branch = "default".to_string(); } event!(Level::INFO, log); let host = host.replace('.', "-"); let future = async move { - let result = repositories::deployments::find_by_name(host).await?; + let result = repositories::deployments::find_by_name(&host).await?; match result { Some(_) => Err(VoyagerError::new( format!("Deployment at this subdomain already exists!"), @@ -39,7 +39,7 @@ pub async fn check( if let Mode::Production = mode { - let result = repositories::deployments::find_by_repo_branch(repo_url, final_branch).await?; + let result = repositories::deployments::find_by_repo_branch(&repo_url, &final_branch).await?; match result { Some(_) => Err(VoyagerError::new( format!("A Production deployment for this repository and branch already exists!"), diff --git a/src/business/services/deployments/delete.rs b/src/business/services/deployments/delete.rs old mode 100644 new mode 100755 index 31b4475..d01e775 --- a/src/business/services/deployments/delete.rs +++ b/src/business/services/deployments/delete.rs @@ -24,9 +24,9 @@ pub async fn delete(deployment_id: String) -> Result<(), VoyagerError> { delete_dns_record(&deployment.dns_record_id).await?; delete_container(name.clone()).await?; - delete_image(deployment.image_name).await?; + delete_image(deployment.image_id).await?; - repositories::deployments::delete(deployment_id).await?; + repositories::deployments::delete(&deployment_id).await?; // TODO: notify user via email diff --git a/src/business/services/deployments/get.rs b/src/business/services/deployments/get.rs old mode 100644 new mode 100755 index 295b687..f070d4c --- a/src/business/services/deployments/get.rs +++ b/src/business/services/deployments/get.rs @@ -12,7 +12,7 @@ pub async fn get(id: String) -> Result { let result = SERVICES_RUNTIME .spawn_handled( "services::deployments::get", - repositories::deployments::find_by_id(id), + async move { repositories::deployments::find_by_id(&id).await }, ) .await?; diff --git a/src/business/services/deployments/get_logs.rs b/src/business/services/deployments/get_logs.rs old mode 100644 new mode 100755 index 72c9f74..8b5cfc0 --- a/src/business/services/deployments/get_logs.rs +++ b/src/business/services/deployments/get_logs.rs @@ -10,7 +10,7 @@ pub async fn get_logs(id: String) -> Result, VoyagerError> { event!(Level::INFO, "Retrieving deployment logs. Id: {id}"); let future = async move { - let deployment = repositories::deployments::find_by_id(id).await?; + let deployment = repositories::deployments::find_by_id(&id).await?; docker::get_logs(&deployment.container_name).await }; diff --git a/src/business/services/deployments/list.rs b/src/business/services/deployments/list.rs old mode 100644 new mode 100755 diff --git a/src/business/services/deployments/mod.rs b/src/business/services/deployments/mod.rs old mode 100644 new mode 100755 diff --git a/src/business/services/deployments/new.rs b/src/business/services/deployments/new.rs index 4a1f53c..1eae191 100755 --- a/src/business/services/deployments/new.rs +++ b/src/business/services/deployments/new.rs @@ -15,7 +15,7 @@ use crate::modules::discord::send_deployment_message; use crate::modules::{cloudflare, git}; use crate::types::model::deployment; use crate::types::other::voyager_error::VoyagerError; -use crate::utils::{self, get_free_port}; +use crate::utils::{self}; use crate::utils::runtime_helpers::RuntimeSpawnHandled; use crate::modules::docker; use async_trait::async_trait; @@ -64,9 +64,9 @@ pub async fn new( dir_as_path: None, tar_path: None, container_id: None, - port: None, - internal_port: None, - image_name: None, + // port: None, + // internal_port: None, + image_id: None, dns_record_id: None, final_id: None, }; @@ -104,10 +104,10 @@ struct TransactionManager { container_id: Option, host: Option, mode: Option, - port: Option, - internal_port: Option, + // port: Option, + // internal_port: Option, container_name: Option, - image_name: Option, + image_id: Option, dns_record_id: Option, final_id: Option, @@ -209,21 +209,20 @@ impl Command for CreateImage { fs::read_to_string(&dockerfile).map_err(|e| VoyagerError::dockerfile_read(Box::new(e)))?; let internal_port = docker::find_internal_port(dockerfile_contents.as_str())?; - let traefik_labels = utils::gen_traefik_labels(manager.container_name.as_ref().unwrap(), manager.host.as_ref().unwrap(), internal_port); - let image_name = docker::build_image(manager.tar_path.as_ref().unwrap(), &traefik_labels, None).await?; + let image_id = docker::build_image(manager.tar_path.as_ref().unwrap(), &traefik_labels, None).await?; - manager.internal_port = Some(internal_port); - manager.image_name = Some(image_name); + // manager.internal_port = Some(internal_port); + manager.image_id = Some(image_id); manager.next = Some(Box::new(CreateContainer)); Ok(()) } async fn undo(&self, manager: &TransactionManager) { - let image_name = manager.image_name.clone().unwrap(); - let _ = docker::delete_image(image_name).await; + let image_id = manager.image_id.clone().unwrap(); + let _ = docker::delete_image(image_id).await; } } @@ -237,11 +236,11 @@ impl Command for CreateContainer { tokio::fs::remove_file(manager.tar_path.as_ref().unwrap()).await .map_err(|e| VoyagerError::delete_file_or_dir(Box::new(e)))?; - let port = get_free_port()?; + // let port = get_free_port()?; let container_id = - docker::create_container(manager.container_name.clone().unwrap(), port, manager.internal_port.unwrap(), manager.image_name.as_ref().unwrap()).await?; + docker::create_container(manager.container_name.clone().unwrap(),/* port, manager.internal_port.unwrap(), */manager.image_id.as_ref().unwrap()).await?; - manager.port = Some(port); + // manager.port = Some(port); manager.container_id = Some(container_id); manager.next = Some(Box::new(StartContainer)); @@ -297,9 +296,9 @@ impl Command for SaveDeployment { _id: ObjectId::new(), container_id: manager.container_id.take().unwrap(), dns_record_id: manager.dns_record_id.clone().unwrap(), - image_name: manager.image_name.clone().unwrap(), + image_id: manager.image_id.clone().unwrap(), container_name: manager.container_name.clone().unwrap(), - port: manager.port.take().unwrap(), + // port: manager.port.take().unwrap(), mode: manager.mode.take().unwrap(), host: manager.host.take().unwrap(), repo_url: manager.repo_url.take().unwrap(), @@ -315,7 +314,7 @@ impl Command for SaveDeployment { } async fn undo(&self, manager: &TransactionManager) { - let deployment_id = manager.final_id.clone().unwrap(); + let deployment_id = manager.final_id.as_ref().unwrap(); let _ = repositories::deployments::delete(deployment_id).await; } } diff --git a/src/business/services/mod.rs b/src/business/services/mod.rs old mode 100644 new mode 100755 diff --git a/src/configs/environment.rs b/src/configs/environment.rs old mode 100644 new mode 100755 diff --git a/src/configs/mod.rs b/src/configs/mod.rs old mode 100644 new mode 100755 diff --git a/src/controllers/deployments/create.rs b/src/controllers/deployments/create.rs index 9f4a353..d27c521 100755 --- a/src/controllers/deployments/create.rs +++ b/src/controllers/deployments/create.rs @@ -10,12 +10,12 @@ use crate::{ }; pub async fn create(Query(queries): Query>) -> impl IntoResponse { - let mode = queries.get("mode").cloned(); - let repo_url = queries.get("repoUrl").cloned(); - let subdomain = queries.get("subdomain").cloned(); + let mode = queries.get("mode"); + let repo_url = queries.get("repoUrl"); + let subdomain = queries.get("subdomain"); // Validations - let mode = match mode.as_deref() { + let mode = match mode.map(|s| s.as_str()) { Some("production") => Mode::Production, Some("preview") => Mode::Preview, Some(_) => { @@ -98,8 +98,8 @@ pub async fn create(Query(queries): Query>) -> impl Into } } -fn resolve_host(subdomain: Option, mode: &Mode) -> Option { - let subdomain = subdomain.unwrap_or_default(); +fn resolve_host(subdomain: Option<&String>, mode: &Mode) -> Option { + let subdomain = subdomain.map(|s| s.as_ref()).unwrap_or_default(); // Validates the subdomain #[allow(clippy::unwrap_used)] // We know that the unwrap will always succeed because it is a valid Regex diff --git a/src/controllers/deployments/mod.rs b/src/controllers/deployments/mod.rs old mode 100644 new mode 100755 diff --git a/src/modules/cloudflare/mod.rs b/src/modules/cloudflare/mod.rs old mode 100644 new mode 100755 diff --git a/src/modules/cloudflare/types/add_dns_record.rs b/src/modules/cloudflare/types/add_dns_record.rs old mode 100644 new mode 100755 diff --git a/src/modules/cloudflare/types/cloudflare_responses.rs b/src/modules/cloudflare/types/cloudflare_responses.rs old mode 100644 new mode 100755 diff --git a/src/modules/cloudflare/types/delete_dns_record.rs b/src/modules/cloudflare/types/delete_dns_record.rs old mode 100644 new mode 100755 diff --git a/src/modules/cloudflare/types/dns_record.rs b/src/modules/cloudflare/types/dns_record.rs old mode 100644 new mode 100755 diff --git a/src/modules/cloudflare/types/mod.rs b/src/modules/cloudflare/types/mod.rs old mode 100644 new mode 100755 diff --git a/src/modules/discord/mod.rs b/src/modules/discord/mod.rs old mode 100644 new mode 100755 diff --git a/src/modules/docker/create_container.rs b/src/modules/docker/create_container.rs index 2804c83..22f50e0 100755 --- a/src/modules/docker/create_container.rs +++ b/src/modules/docker/create_container.rs @@ -12,14 +12,13 @@ use super::{DOCKER, DOCKER_RUNTIME}; pub async fn create_container( name: String, - port: u16, - #[allow(unused)] - internal_port: u16, + // port: u16, + // internal_port: u16, docker_image: &str, ) -> Result { event!( Level::INFO, - "Creating a new container {name} at port {port}. Docker Image: {docker_image}" + "Creating a new container {name}. Docker Image: {docker_image}" ); // let host_config = HostConfig { diff --git a/src/modules/docker/delete_image.rs b/src/modules/docker/delete_image.rs index d3d03f4..826cd22 100755 --- a/src/modules/docker/delete_image.rs +++ b/src/modules/docker/delete_image.rs @@ -6,8 +6,8 @@ use axum::http::StatusCode; use bollard::image::RemoveImageOptions; use tracing::{event, Level}; -pub async fn delete_image(image_name: String) -> Result<(), VoyagerError> { - event!(Level::INFO, "Deleting image {image_name}"); +pub async fn delete_image(image_id: String) -> Result<(), VoyagerError> { + event!(Level::INFO, "Deleting image {image_id}"); let options = Some(RemoveImageOptions { force: true, @@ -16,7 +16,7 @@ pub async fn delete_image(image_name: String) -> Result<(), VoyagerError> { DOCKER_RUNTIME .spawn_handled("modules::docker::delete_image", async move { - DOCKER.remove_image(&image_name, options, None).await + DOCKER.remove_image(&image_id, options, None).await }) .await? .map_err(|e| VoyagerError::delete_image(Box::new(e)))?; diff --git a/src/modules/docker/get_internal_port.rs b/src/modules/docker/get_internal_port.rs index b8f155c..ad4cbe7 100755 --- a/src/modules/docker/get_internal_port.rs +++ b/src/modules/docker/get_internal_port.rs @@ -1,5 +1,3 @@ -use std::num::ParseIntError; - use axum::http::StatusCode; use regex::Regex; use tracing::{event, Level}; @@ -13,21 +11,14 @@ pub fn find_internal_port(docker_file_content: &str) -> Result> = vec![]; - for (_, [port]) in re { - results.push(port.parse::()); - } - - results.first() - .ok_or_else(|| VoyagerError::parse_port(None)) - .and_then(|r| r.clone().map_err(|e| VoyagerError::parse_port(Some(Box::new(e))))) + .map(|c| c[1].to_string()) + .next() + .ok_or_else(|| VoyagerError::parse_port(None))? + .parse::() + .map_err(|e| VoyagerError::parse_port(Some(Box::new(e)))) } impl VoyagerError { diff --git a/src/modules/docker/get_logs.rs b/src/modules/docker/get_logs.rs old mode 100644 new mode 100755 diff --git a/src/modules/docker/mod.rs b/src/modules/docker/mod.rs old mode 100644 new mode 100755 diff --git a/src/modules/git/clone.rs b/src/modules/git/clone.rs index ad245b9..0d7db95 100755 --- a/src/modules/git/clone.rs +++ b/src/modules/git/clone.rs @@ -18,9 +18,9 @@ pub fn clone( ) -> Result { event!(Level::INFO, "Cloning repository: {}", repo_url); - let username = GIT_USERNAME.as_ref(); + let username = &*GIT_USERNAME; - let pat = GIT_PAT.as_ref(); + let pat = &*GIT_PAT; let repo_url = format!("https://git.lunarlabs.cc/{repo_url}.git"); // Configure authentication diff --git a/src/modules/git/mod.rs b/src/modules/git/mod.rs old mode 100644 new mode 100755 diff --git a/src/modules/tar/mod.rs b/src/modules/tar/mod.rs old mode 100644 new mode 100755 diff --git a/src/types/model/deployment.rs b/src/types/model/deployment.rs old mode 100644 new mode 100755 index d5124a2..502f30a --- a/src/types/model/deployment.rs +++ b/src/types/model/deployment.rs @@ -23,8 +23,8 @@ pub struct Deployment { pub container_id: String, pub dns_record_id: String, pub container_name: String, - pub image_name: String, - pub port: u16, + pub image_id: String, + // pub port: u16, pub mode: Mode, pub host: String, pub repo_url: String, diff --git a/src/types/model/mod.rs b/src/types/model/mod.rs old mode 100644 new mode 100755 diff --git a/src/types/other/mod.rs b/src/types/other/mod.rs old mode 100644 new mode 100755 diff --git a/src/types/other/voyager_error.rs b/src/types/other/voyager_error.rs deleted file mode 100755 index d395984..0000000 --- a/src/types/other/voyager_error.rs +++ /dev/null @@ -1,53 +0,0 @@ -use std::{error::Error, fmt}; - -use axum::http::StatusCode; -use tracing::{event, Level}; - -use crate::utils::Error as OurErr; - -#[derive(Debug)] -pub struct VoyagerError { - pub message: String, - pub status_code: StatusCode, - pub source: Option, -} - -impl fmt::Display for VoyagerError { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - let message = format!( - "Voyager Status Code: {}. {}.", - self.status_code, self.message - ); - - if let Some(source) = &self.source { - write!(f, "{message} Source Error: {source}") - } else { - write!(f, "{message}") - } - } -} - -impl Error for VoyagerError { - fn source(&self) -> Option<&(dyn Error + 'static)> { - self.source.as_deref().map(|s| s as _) - } -} - -impl VoyagerError { - pub fn new(message: String, status_code: StatusCode, is_warn: bool, source: Option) -> Self { - let result = Self { - message, - status_code, - source, - }; - - if is_warn { - event!(Level::WARN, "{result}"); - } else { - event!(Level::ERROR, "{result}"); - }; - - result - } -} - diff --git a/src/types/view/create_deployment.rs b/src/types/view/create_deployment.rs old mode 100644 new mode 100755 diff --git a/src/types/view/delete_deployment.rs b/src/types/view/delete_deployment.rs old mode 100644 new mode 100755 diff --git a/src/types/view/get_deployment.rs b/src/types/view/get_deployment.rs old mode 100644 new mode 100755 diff --git a/src/types/view/get_deployment_logs.rs b/src/types/view/get_deployment_logs.rs old mode 100644 new mode 100755 diff --git a/src/types/view/get_deployments.rs b/src/types/view/get_deployments.rs old mode 100644 new mode 100755 diff --git a/src/types/view/logs.rs b/src/types/view/logs.rs old mode 100644 new mode 100755 diff --git a/src/types/view/mod.rs b/src/types/view/mod.rs old mode 100644 new mode 100755 diff --git a/src/utils/expect_error.rs b/src/utils/expect_error.rs old mode 100644 new mode 100755 diff --git a/src/utils/gen_traefik_labels.rs b/src/utils/gen_traefik_labels.rs index 8591045..d7b26b7 100755 --- a/src/utils/gen_traefik_labels.rs +++ b/src/utils/gen_traefik_labels.rs @@ -19,9 +19,5 @@ pub fn gen_traefik_labels(name: &str, host: &str, internal_port: u16) -> Vec<(St ), format!("{internal_port}"), ), - // ( - // format!("traefik.http.routers.voyager-{name}.tls"), - // "true".to_string(), - // ), ] } diff --git a/src/utils/get_free_port.rs b/src/utils/get_free_port.rs index ff56715..337441c 100755 --- a/src/utils/get_free_port.rs +++ b/src/utils/get_free_port.rs @@ -1,35 +1,35 @@ -use std::net::TcpListener; +// use std::net::TcpListener; -use axum::http::StatusCode; -use tracing::{event, Level}; +// use axum::http::StatusCode; +// use tracing::{event, Level}; -use crate::{ - configs::environment::HOSTNAME, types::other::voyager_error::VoyagerError, utils::Error, -}; +// use crate::{ +// configs::environment::HOSTNAME, types::other::voyager_error::VoyagerError, utils::Error, +// }; -pub fn get_free_port() -> Result { - event!(Level::INFO, "Attempting to get free port"); - let port = _get_free_port().map_err(VoyagerError::get_free_port)?; +// pub fn get_free_port() -> Result { +// let fun = || { +// Ok::( +// TcpListener::bind(format!("{}:0", *HOSTNAME))? +// .local_addr()? +// .port(), +// ) +// }; - event!(Level::INFO, "Successfully got free port: {port}"); - Ok(port) -} +// event!(Level::INFO, "Attempting to get free port"); +// let port = fun().map_err(VoyagerError::get_free_port)?; -fn _get_free_port() -> Result { - Ok( - TcpListener::bind(format!("{}:0", *HOSTNAME))? - .local_addr()? - .port(), - ) -} +// event!(Level::INFO, "Successfully got free port: {port}"); +// Ok(port) +// } -impl VoyagerError { - fn get_free_port(e: Error) -> Self { - Self::new( - "Failed to get free port".to_string(), - StatusCode::INTERNAL_SERVER_ERROR, - false, - Some(e), - ) - } -} +// impl VoyagerError { +// fn get_free_port(e: Error) -> Self { +// Self::new( +// "Failed to get free port".to_string(), +// StatusCode::INTERNAL_SERVER_ERROR, +// false, +// Some(e), +// ) +// } +// } diff --git a/src/utils/http_client/client_wrapper.rs b/src/utils/http_client/client_wrapper.rs old mode 100644 new mode 100755 diff --git a/src/utils/http_client/deserializable.rs b/src/utils/http_client/deserializable.rs old mode 100644 new mode 100755 diff --git a/src/utils/http_client/ensure_success.rs b/src/utils/http_client/ensure_success.rs old mode 100644 new mode 100755 diff --git a/src/utils/http_client/generate_methods.rs b/src/utils/http_client/generate_methods.rs old mode 100644 new mode 100755 diff --git a/src/utils/http_client/http_error.rs b/src/utils/http_client/http_error.rs old mode 100644 new mode 100755 diff --git a/src/utils/http_client/mod.rs b/src/utils/http_client/mod.rs old mode 100644 new mode 100755 index af9d22f..a4d7400 --- a/src/utils/http_client/mod.rs +++ b/src/utils/http_client/mod.rs @@ -31,7 +31,7 @@ impl HTTPClient { #[allow(clippy::unwrap_used)] // Should never fail headers.insert(ACCEPT, "application/json".parse().unwrap()); #[allow(clippy::unwrap_used)] // Should never fail - headers.insert(USER_AGENT, "reqwest".parse().unwrap()); + headers.insert(USER_AGENT, "Voyager".parse().unwrap()); headers } @@ -75,7 +75,7 @@ impl HTTPClient { body: Option<&(impl Serialize + Send + Sync)>, ) -> Result { let action = |client: Arc>, method: Method| async move { - client.write().await.request(method, route, body).await + client.read().await.request(method, route, body).await }; let client = self.get_client(false); diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 8bd7060..fdab231 100755 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,11 +1,11 @@ mod expect_error; -mod get_free_port; +// mod get_free_port; mod gen_traefik_labels; pub mod http_client; pub mod runtime_helpers; pub use expect_error::*; -pub use get_free_port::*; +// pub use get_free_port::*; pub use gen_traefik_labels::*; pub type Error = Box;