consolidate periphery docker apis into single mod

This commit is contained in:
mbecker20
2025-10-04 16:17:32 -07:00
parent 6e039b41f1
commit f49b186f2f
15 changed files with 229 additions and 235 deletions

View File

@@ -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,

View File

@@ -694,7 +694,7 @@ impl Resolve<ExecuteArgs> 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<ExecuteArgs> 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<ExecuteArgs> 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<ExecuteArgs> 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<ExecuteArgs> 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<ExecuteArgs> 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",

View File

@@ -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;

View File

@@ -99,7 +99,7 @@ impl Resolve<WriteArgs> 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,
})

View File

@@ -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};

View File

@@ -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<super::Args> for InspectImage {
#[instrument(name = "InspectImage", level = "debug")]
@@ -111,3 +117,80 @@ impl Resolve<super::Args> for PruneImages {
Ok(run_komodo_command("Prune Images", None, command).await)
}
}
// =======
// NETWORK
// =======
impl Resolve<super::Args> for InspectNetwork {
#[instrument(name = "InspectNetwork", level = "debug")]
async fn resolve(self, _: &super::Args) -> serror::Result<Network> {
Ok(docker_client().inspect_network(&self.name).await?)
}
}
//
impl Resolve<super::Args> for CreateNetwork {
#[instrument(name = "CreateNetwork", skip(self))]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
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<super::Args> for DeleteNetwork {
#[instrument(name = "DeleteNetwork", skip(self))]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = format!("docker network rm {}", self.name);
Ok(run_komodo_command("Delete Network", None, command).await)
}
}
//
impl Resolve<super::Args> for PruneNetworks {
#[instrument(name = "PruneNetworks", skip(self))]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = String::from("docker network prune -f");
Ok(run_komodo_command("Prune Networks", None, command).await)
}
}
// ======
// VOLUME
// ======
impl Resolve<super::Args> for InspectVolume {
#[instrument(name = "InspectVolume", level = "debug")]
async fn resolve(self, _: &super::Args) -> serror::Result<Volume> {
Ok(docker_client().inspect_volume(&self.name).await?)
}
}
//
impl Resolve<super::Args> for DeleteVolume {
#[instrument(name = "DeleteVolume")]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = format!("docker volume rm {}", self.name);
Ok(run_komodo_command("Delete Volume", None, command).await)
}
}
//
impl Resolve<super::Args> for PruneVolumes {
#[instrument(name = "PruneVolumes")]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = String::from("docker volume prune -a -f");
Ok(run_komodo_command("Prune Volumes", None, command).await)
}
}

View File

@@ -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 {

View File

@@ -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<super::Args> for InspectNetwork {
#[instrument(name = "InspectNetwork", level = "debug")]
async fn resolve(self, _: &super::Args) -> serror::Result<Network> {
Ok(docker_client().inspect_network(&self.name).await?)
}
}
//
impl Resolve<super::Args> for CreateNetwork {
#[instrument(name = "CreateNetwork", skip(self))]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
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<super::Args> for DeleteNetwork {
#[instrument(name = "DeleteNetwork", skip(self))]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = format!("docker network rm {}", self.name);
Ok(run_komodo_command("Delete Network", None, command).await)
}
}
//
impl Resolve<super::Args> for PruneNetworks {
#[instrument(name = "PruneNetworks", skip(self))]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = String::from("docker network prune -f");
Ok(run_komodo_command("Prune Networks", None, command).await)
}
}

View File

@@ -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<super::Args> for InspectVolume {
#[instrument(name = "InspectVolume", level = "debug")]
async fn resolve(self, _: &super::Args) -> serror::Result<Volume> {
Ok(docker_client().inspect_volume(&self.name).await?)
}
}
//
impl Resolve<super::Args> for DeleteVolume {
#[instrument(name = "DeleteVolume")]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = format!("docker volume rm {}", self.name);
Ok(run_komodo_command("Delete Volume", None, command).await)
}
}
//
impl Resolve<super::Args> for PruneVolumes {
#[instrument(name = "PruneVolumes")]
async fn resolve(self, _: &super::Args) -> serror::Result<Log> {
let command = String::from("docker volume prune -a -f");
Ok(run_komodo_command("Prune Volumes", None, command).await)
}
}

View File

@@ -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<ImageHistoryResponseItem>)]
#[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<String>,
/// Override registry token for account with one sent from core.
pub token: Option<String>,
}
//
#[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<String>,
}
//
#[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 {}

View File

@@ -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<ImageHistoryResponseItem>)]
#[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<String>,
/// Override registry token for account with one sent from core.
pub token: Option<String>,
}
//
#[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 {}

View File

View File

@@ -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;
//

View File

@@ -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<String>,
}
//
#[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 {}

View File

@@ -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 {}