diff --git a/bin/core/src/api/execute/deployment.rs b/bin/core/src/api/execute/deployment.rs index 3ec517c69..7619d3f26 100644 --- a/bin/core/src/api/execute/deployment.rs +++ b/bin/core/src/api/execute/deployment.rs @@ -334,7 +334,7 @@ pub async fn pull_deployment_inner( let res = async { let log = match periphery_client(server) .await? - .request(api::image::PullImage { + .request(api::docker::PullImage { name: image, account, token, diff --git a/bin/core/src/api/execute/server.rs b/bin/core/src/api/execute/server.rs index 37d400c17..c3dc44e4b 100644 --- a/bin/core/src/api/execute/server.rs +++ b/bin/core/src/api/execute/server.rs @@ -694,7 +694,7 @@ impl Resolve for DeleteNetwork { let periphery = periphery_client(&server).await?; let log = match periphery - .request(api::network::DeleteNetwork { + .request(api::docker::DeleteNetwork { name: self.name.clone(), }) .await @@ -756,7 +756,7 @@ impl Resolve for PruneNetworks { let periphery = periphery_client(&server).await?; let log = match periphery - .request(api::network::PruneNetworks {}) + .request(api::docker::PruneNetworks {}) .await .context(format!( "failed to prune networks on server {}", @@ -799,7 +799,7 @@ impl Resolve for DeleteImage { let periphery = periphery_client(&server).await?; let log = match periphery - .request(api::image::DeleteImage { + .request(api::docker::DeleteImage { name: self.name.clone(), }) .await @@ -858,7 +858,7 @@ impl Resolve for PruneImages { let periphery = periphery_client(&server).await?; let log = - match periphery.request(api::image::PruneImages {}).await { + match periphery.request(api::docker::PruneImages {}).await { Ok(log) => log, Err(e) => Log::error( "prune images", @@ -899,7 +899,7 @@ impl Resolve for DeleteVolume { let periphery = periphery_client(&server).await?; let log = match periphery - .request(api::volume::DeleteVolume { + .request(api::docker::DeleteVolume { name: self.name.clone(), }) .await @@ -961,7 +961,7 @@ impl Resolve for PruneVolumes { let periphery = periphery_client(&server).await?; let log = - match periphery.request(api::volume::PruneVolumes {}).await { + match periphery.request(api::docker::PruneVolumes {}).await { Ok(log) => log, Err(e) => Log::error( "prune volumes", diff --git a/bin/core/src/api/read/server.rs b/bin/core/src/api/read/server.rs index 860367e58..a048f5e0d 100644 --- a/bin/core/src/api/read/server.rs +++ b/bin/core/src/api/read/server.rs @@ -39,9 +39,9 @@ use komodo_client::{ use periphery_client::api::{ self as periphery, container::InspectContainer, - image::{ImageHistory, InspectImage}, - network::InspectNetwork, - volume::InspectVolume, + docker::{ + ImageHistory, InspectImage, InspectNetwork, InspectVolume, + }, }; use reqwest::StatusCode; use resolver_api::Resolve; diff --git a/bin/core/src/api/write/server.rs b/bin/core/src/api/write/server.rs index 27cad3671..7f556126f 100644 --- a/bin/core/src/api/write/server.rs +++ b/bin/core/src/api/write/server.rs @@ -99,7 +99,7 @@ impl Resolve for CreateNetwork { update.id = add_update(update.clone()).await?; match periphery - .request(api::network::CreateNetwork { + .request(api::docker::CreateNetwork { name: to_docker_compatible_name(&self.name), driver: None, }) diff --git a/bin/core/src/helpers/prune.rs b/bin/core/src/helpers/prune.rs index 9fe544f94..30ad76dbe 100644 --- a/bin/core/src/helpers/prune.rs +++ b/bin/core/src/helpers/prune.rs @@ -4,7 +4,7 @@ use async_timing_util::{ }; use database::mungos::{find::find_collect, mongodb::bson::doc}; use futures::{StreamExt, stream::FuturesUnordered}; -use periphery_client::api::image::PruneImages; +use periphery_client::api::docker::PruneImages; use crate::{config::core_config, state::db_client}; diff --git a/bin/periphery/src/api/image.rs b/bin/periphery/src/api/docker.rs similarity index 55% rename from bin/periphery/src/api/image.rs rename to bin/periphery/src/api/docker.rs index a780e8d90..878aec2ac 100644 --- a/bin/periphery/src/api/image.rs +++ b/bin/periphery/src/api/docker.rs @@ -4,16 +4,22 @@ use cache::TimeoutCache; use command::run_komodo_command; use komodo_client::entities::{ deployment::extract_registry_domain, - docker::image::{Image, ImageHistoryResponseItem}, + docker::{ + image::{Image, ImageHistoryResponseItem}, + network::Network, + volume::Volume, + }, komodo_timestamp, update::Log, }; -use periphery_client::api::image::*; +use periphery_client::api::docker::*; use resolver_api::Resolve; use crate::docker::{docker_client, docker_login}; -// +// ===== +// IMAGE +// ===== impl Resolve for InspectImage { #[instrument(name = "InspectImage", level = "debug")] @@ -111,3 +117,80 @@ impl Resolve for PruneImages { Ok(run_komodo_command("Prune Images", None, command).await) } } + +// ======= +// NETWORK +// ======= + +impl Resolve for InspectNetwork { + #[instrument(name = "InspectNetwork", level = "debug")] + async fn resolve(self, _: &super::Args) -> serror::Result { + Ok(docker_client().inspect_network(&self.name).await?) + } +} + +// + +impl Resolve for CreateNetwork { + #[instrument(name = "CreateNetwork", skip(self))] + async fn resolve(self, _: &super::Args) -> serror::Result { + let CreateNetwork { name, driver } = self; + let driver = match driver { + Some(driver) => format!(" -d {driver}"), + None => String::new(), + }; + let command = format!("docker network create{driver} {name}"); + Ok(run_komodo_command("Create Network", None, command).await) + } +} + +// + +impl Resolve for DeleteNetwork { + #[instrument(name = "DeleteNetwork", skip(self))] + async fn resolve(self, _: &super::Args) -> serror::Result { + let command = format!("docker network rm {}", self.name); + Ok(run_komodo_command("Delete Network", None, command).await) + } +} + +// + +impl Resolve for PruneNetworks { + #[instrument(name = "PruneNetworks", skip(self))] + async fn resolve(self, _: &super::Args) -> serror::Result { + let command = String::from("docker network prune -f"); + Ok(run_komodo_command("Prune Networks", None, command).await) + } +} + +// ====== +// VOLUME +// ====== + +impl Resolve for InspectVolume { + #[instrument(name = "InspectVolume", level = "debug")] + async fn resolve(self, _: &super::Args) -> serror::Result { + Ok(docker_client().inspect_volume(&self.name).await?) + } +} + +// + +impl Resolve for DeleteVolume { + #[instrument(name = "DeleteVolume")] + async fn resolve(self, _: &super::Args) -> serror::Result { + let command = format!("docker volume rm {}", self.name); + Ok(run_komodo_command("Delete Volume", None, command).await) + } +} + +// + +impl Resolve for PruneVolumes { + #[instrument(name = "PruneVolumes")] + async fn resolve(self, _: &super::Args) -> serror::Result { + let command = String::from("docker volume prune -a -f"); + Ok(run_komodo_command("Prune Volumes", None, command).await) + } +} diff --git a/bin/periphery/src/api/mod.rs b/bin/periphery/src/api/mod.rs index ff1c5160d..552f1c34f 100644 --- a/bin/periphery/src/api/mod.rs +++ b/bin/periphery/src/api/mod.rs @@ -8,8 +8,8 @@ use komodo_client::entities::{ update::Log, }; use periphery_client::api::{ - build::*, compose::*, container::*, git::*, image::*, network::*, - stats::*, terminal::*, volume::*, *, + build::*, compose::*, container::*, docker::*, git::*, stats::*, + terminal::*, *, }; use resolver_api::Resolve; use response::JsonBytes; @@ -28,10 +28,8 @@ mod build; mod compose; mod container; mod deploy; +mod docker; mod git; -mod image; -mod network; -mod volume; #[derive(Debug)] pub struct Args { diff --git a/bin/periphery/src/api/network.rs b/bin/periphery/src/api/network.rs deleted file mode 100644 index e546b6eef..000000000 --- a/bin/periphery/src/api/network.rs +++ /dev/null @@ -1,52 +0,0 @@ -use command::run_komodo_command; -use komodo_client::entities::{ - docker::network::Network, update::Log, -}; -use periphery_client::api::network::*; -use resolver_api::Resolve; - -use crate::docker::docker_client; - -// - -impl Resolve for InspectNetwork { - #[instrument(name = "InspectNetwork", level = "debug")] - async fn resolve(self, _: &super::Args) -> serror::Result { - Ok(docker_client().inspect_network(&self.name).await?) - } -} - -// - -impl Resolve for CreateNetwork { - #[instrument(name = "CreateNetwork", skip(self))] - async fn resolve(self, _: &super::Args) -> serror::Result { - let CreateNetwork { name, driver } = self; - let driver = match driver { - Some(driver) => format!(" -d {driver}"), - None => String::new(), - }; - let command = format!("docker network create{driver} {name}"); - Ok(run_komodo_command("Create Network", None, command).await) - } -} - -// - -impl Resolve for DeleteNetwork { - #[instrument(name = "DeleteNetwork", skip(self))] - async fn resolve(self, _: &super::Args) -> serror::Result { - let command = format!("docker network rm {}", self.name); - Ok(run_komodo_command("Delete Network", None, command).await) - } -} - -// - -impl Resolve for PruneNetworks { - #[instrument(name = "PruneNetworks", skip(self))] - async fn resolve(self, _: &super::Args) -> serror::Result { - let command = String::from("docker network prune -f"); - Ok(run_komodo_command("Prune Networks", None, command).await) - } -} diff --git a/bin/periphery/src/api/volume.rs b/bin/periphery/src/api/volume.rs deleted file mode 100644 index 523e2ee78..000000000 --- a/bin/periphery/src/api/volume.rs +++ /dev/null @@ -1,35 +0,0 @@ -use command::run_komodo_command; -use komodo_client::entities::{docker::volume::Volume, update::Log}; -use periphery_client::api::volume::*; -use resolver_api::Resolve; - -use crate::docker::docker_client; - -// - -impl Resolve for InspectVolume { - #[instrument(name = "InspectVolume", level = "debug")] - async fn resolve(self, _: &super::Args) -> serror::Result { - Ok(docker_client().inspect_volume(&self.name).await?) - } -} - -// - -impl Resolve for DeleteVolume { - #[instrument(name = "DeleteVolume")] - async fn resolve(self, _: &super::Args) -> serror::Result { - let command = format!("docker volume rm {}", self.name); - Ok(run_komodo_command("Delete Volume", None, command).await) - } -} - -// - -impl Resolve for PruneVolumes { - #[instrument(name = "PruneVolumes")] - async fn resolve(self, _: &super::Args) -> serror::Result { - let command = String::from("docker volume prune -a -f"); - Ok(run_komodo_command("Prune Volumes", None, command).await) - } -} diff --git a/client/periphery/rs/src/api/docker.rs b/client/periphery/rs/src/api/docker.rs new file mode 100644 index 000000000..2b602ae1b --- /dev/null +++ b/client/periphery/rs/src/api/docker.rs @@ -0,0 +1,126 @@ +use komodo_client::entities::{ + docker::{ + image::{Image, ImageHistoryResponseItem}, + network::Network, volume::Volume, + }, + update::Log, +}; +use resolver_api::Resolve; +use serde::{Deserialize, Serialize}; + +// ===== +// IMAGE +// ===== + +#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] +#[response(Image)] +#[error(serror::Error)] +pub struct InspectImage { + pub name: String, +} + +// + +#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] +#[response(Vec)] +#[error(serror::Error)] +pub struct ImageHistory { + pub name: String, +} + +// + +#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct PullImage { + /// The name of the image. + pub name: String, + /// Optional account to use to pull the image + pub account: Option, + /// Override registry token for account with one sent from core. + pub token: Option, +} + +// + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct DeleteImage { + /// Id or name + pub name: String, +} + +// + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct PruneImages {} + +// ======= +// NETWORK +// ======= + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Network)] +#[error(serror::Error)] +pub struct InspectNetwork { + pub name: String, +} + +// + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct CreateNetwork { + pub name: String, + pub driver: Option, +} + +// + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct DeleteNetwork { + /// Id or name + pub name: String, +} + +// + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct PruneNetworks {} + +// ====== +// VOLUME +// ====== + +#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] +#[response(Volume)] +#[error(serror::Error)] +pub struct InspectVolume { + pub name: String, +} + +// + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct DeleteVolume { + /// Id or name + pub name: String, +} + +// + +#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] +#[response(Log)] +#[error(serror::Error)] +pub struct PruneVolumes {} diff --git a/client/periphery/rs/src/api/image.rs b/client/periphery/rs/src/api/image.rs deleted file mode 100644 index f5a1c2123..000000000 --- a/client/periphery/rs/src/api/image.rs +++ /dev/null @@ -1,55 +0,0 @@ -use komodo_client::entities::{ - docker::image::{Image, ImageHistoryResponseItem}, - update::Log, -}; -use resolver_api::Resolve; -use serde::{Deserialize, Serialize}; - -// - -#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] -#[response(Image)] -#[error(serror::Error)] -pub struct InspectImage { - pub name: String, -} - -// - -#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] -#[response(Vec)] -#[error(serror::Error)] -pub struct ImageHistory { - pub name: String, -} - -// - -#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct PullImage { - /// The name of the image. - pub name: String, - /// Optional account to use to pull the image - pub account: Option, - /// Override registry token for account with one sent from core. - pub token: Option, -} - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct DeleteImage { - /// Id or name - pub name: String, -} - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct PruneImages {} diff --git a/client/periphery/rs/src/api/keys.rs b/client/periphery/rs/src/api/keys.rs new file mode 100644 index 000000000..e69de29bb diff --git a/client/periphery/rs/src/api/mod.rs b/client/periphery/rs/src/api/mod.rs index 70311edd4..17d7a4db4 100644 --- a/client/periphery/rs/src/api/mod.rs +++ b/client/periphery/rs/src/api/mod.rs @@ -15,12 +15,11 @@ use serde::{Deserialize, Serialize}; pub mod build; pub mod compose; pub mod container; +pub mod docker; pub mod git; -pub mod image; -pub mod network; +pub mod keys; pub mod stats; pub mod terminal; -pub mod volume; // diff --git a/client/periphery/rs/src/api/network.rs b/client/periphery/rs/src/api/network.rs deleted file mode 100644 index 21e2de3b4..000000000 --- a/client/periphery/rs/src/api/network.rs +++ /dev/null @@ -1,41 +0,0 @@ -use komodo_client::entities::{ - docker::network::Network, update::Log, -}; -use resolver_api::Resolve; -use serde::{Deserialize, Serialize}; - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Network)] -#[error(serror::Error)] -pub struct InspectNetwork { - pub name: String, -} - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct CreateNetwork { - pub name: String, - pub driver: Option, -} - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct DeleteNetwork { - /// Id or name - pub name: String, -} - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct PruneNetworks {} diff --git a/client/periphery/rs/src/api/volume.rs b/client/periphery/rs/src/api/volume.rs deleted file mode 100644 index 462b1806d..000000000 --- a/client/periphery/rs/src/api/volume.rs +++ /dev/null @@ -1,29 +0,0 @@ -use komodo_client::entities::{docker::volume::Volume, update::Log}; -use resolver_api::Resolve; -use serde::{Deserialize, Serialize}; - -// - -#[derive(Debug, Clone, Serialize, Deserialize, Resolve)] -#[response(Volume)] -#[error(serror::Error)] -pub struct InspectVolume { - pub name: String, -} - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct DeleteVolume { - /// Id or name - pub name: String, -} - -// - -#[derive(Serialize, Deserialize, Debug, Clone, Resolve)] -#[response(Log)] -#[error(serror::Error)] -pub struct PruneVolumes {}